Моя цель из кода заключается в следующем:
-Создайте случайное число между заданным диапазоном.
-Заставьте пользователя угадать число, используя дочерний процесс.
-Создайте, что родитель сообщает пользователю, если догадка должна быть выше / ниже.
-Если догадка верна, дать ребенку сигнал на выход.
Текущий код:
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;
}
Мой текущий вывод:
"Введите ваше предположение:"
вводит его
Затем один из Печатные высказывания у родителей начинают выполняться бесконечно.
Как я могу синхронизировать оба способа так, чтобы каждый ожидал, пока другой достигнет своей цели?