1
我有一个任务,我需要创建一个父进程和2个子进程具有相同的父亲,第一个子进程需要读取一个字符串并打印它控制台,第二个子进程需要读取另一个字符串并将其打印在控制台中,并且父亲需要连接这两个字符串并将其打印在控制台中。这看起来很简单,但即将面临等待和信号部分的艰难时刻,我无法让父亲先等待孩子进程,以便他可以采取行动。使用等待和信号使父进程等待孩子结束
#include <stdlib.h>
#include <fcntl.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
char papa[1000];
char hijo1[100];
char hijo2[100];
int main() {
pid_t son1,father;
int status;
son1 = fork();
if (son1 == 0) { //proceso hijo 1
printf("hijo1:%d\n", getpid());
fgets(hijo1, 100, stdin);
printf ("%s\n", hijo1);
sleep(2);
exit (0);
}else if (son1 > 0) { //proceso padre
pid_t son2 = fork();
if (son2 == 0) { //proceso hijo 2
printf("hijo2:%d\n", getpid());
exit (0);
}else if (son2 > 0) {
wait(NULL);
printf("padre:%d\n", getpid());
sleep(2);
exit (0);
}else {
printf("fork error");
return 0;
}
} else {
printf("fork error");
return 0;
}
return 0;
}
这仅仅是一个结构,而我发现决策过程的父亲等待