Я хочу раскошелиться и выполнить несколько процессов из другого.Мой родительский код -
/*Daddy.c*/
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
int main(void)
{
int status;
char *nChild;
for (int i=0; i<3;i++){
int pid = fork();
if (pid == 0)
{
sprintf(nChild, "%d", i);
printf("%d\n", i);
char *const arguments[]={nChild, NULL};
fflush(NULL);
execv("child",arguments);
printf("\nNo , you can't print!\n");
}else if (pid == -1){
printf("%d\n", getpid());
exit(0);
}
}
wait(&status);
printf("Dad %d went out!\n", getpid());
exit(0);
}
, а мой дочерний процесс -
/*child.c*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int args, char **argv){
if( args !=2){
printf("Child going away!\n");
exit(1);
}
printf("Child %s: %d going away stylishly!\n", argv[1], getpid());
exit(0);
}
Когда я не создаю три вилки, но одну, я знаю, как создать ребенка, сделайте некоторую работуи выход от ребенка и родителя.Но в этом случае с несколькими детьми кажется, что ребенок никогда не казнит.Из-за строки wait(&status)
я действительно надеялся, что когда выходит первый ребенок, родитель тоже выходит, но любой ребенок печатает любое сообщение. Некоторые соответствующие предыдущие вопросы не помогли.