让孩子和父母无限期地等待对方

时间:2020-04-05 14:17:11

标签: c fork

我的代码目标如下:
-生成给定范围内的随机数。
-使用子进程让用户猜测数字。
-让父母告诉用户猜测是否应该更高/更低。
-如果猜测正确,则为孩子退出信号。

当前代码:

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;
}

我当前的输出是:
“输入您的猜测:”
输入
然后,父项中的打印语句之一开始无限执行。

如何以彼此等待对方达到我的目标的方式来同步两者?

0 个答案:

没有答案
相关问题