我的代码目标如下:
-生成给定范围内的随机数。
-使用子进程让用户猜测数字。
-让父母告诉用户猜测是否应该更高/更低。
-如果猜测正确,则为孩子退出信号。
当前代码:
int main() {
int randomnumber = 1 + rand() % 51;
pid_t pid = fork();
int fd[2];
int fd2[2];
pipe(fd);
pipe(fd2);
if (pid < 0) {
printf("Fork failed");
}
if (pid == 0) {
printf("Enter your guess: \n");
}
while (1) {
if (pid == 0) {
int sign;
close(fd2[1]);
read(fd2[0], &sign, sizeof(int));
if (sign == 1)
exit(0);
int guess;
scanf("%d", &guess);
close(fd[0]);
write(fd[1], &guess, sizeof(int));
}
if (pid > 0) {
wait(NULL);
int checker;
close(fd[1]);
read(fd[0], &checker, sizeof(int));
if (checker > randomnumber) {
printf("Guess should be lower");
}
if (checker < randomnumber) {
printf("Guess should be higher");
}
wait(NULL);
if (checker == randomnumber) {
int signal = 1;
close(fd2[0]);
write(fd2[1], &signal, sizeof(int));
printf("WIN");
break;
}
}
}
return 1;
}
我当前的输出是:
“输入您的猜测:”
输入
然后,父项中的打印语句之一开始无限执行。
如何以彼此等待对方达到我的目标的方式来同步两者?