1

基本上,我有这个功能。在 fgets 之后,我希望父母通过将其 play 变量更改为 0 来让孩子停止。我该怎么做?

    void readQuestion(char * question) {
      int play = 1;
      char inputline[256];
      int s;
      char * holder;
      int p = fork();
      if (p == 0) {
        while(play) {
          holder = strsep(&question," ");
          if(holder) {
        printf("%s\n",holder);
        sleep(1);
          }
          else{
        play = 0;
          }
        }
      }
      else {
        fgets(inputline,256,stdin);
        printf("%s",inputline);
        kill();
      }
    }
4

2 回答 2

1

为此,您需要采用以下两种方法之一...

  1. 使用诸如signal(7)socket(7)之类的消息 API 发送消息
  2. 如果你真的想调整孩子的记忆,你不需要fork(2)而是一个线程库。
于 2013-01-24T21:11:27.350 回答
0

您可能不想分叉,而是创建一个线程。Fork 正在创建一个新进程,因此您将有两个进程,每个进程都有自己的“play”变量副本

见... http://www.geekride.com/fork-forking-vs-threading-thread-linux-kernel/

于 2013-01-24T21:11:43.643 回答