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

そのためには、2 つのアプローチのいずれかを採用する必要があります...

  1. signal(7)socket(7 ) などのメッセージ API を使用してメッセージを送信する
  2. 本当に子のメモリを微調整したい場合は、fork(2) ではなく、スレッド ライブラリが必要です。
于 2013-01-24T21:11:27.350 に答える
0

おそらくフォークしたくないでしょうが、代わりにスレッドを作成します。Fork は新しいプロセスを作成しているため、それぞれ「play」変数の独自のコピーを持つ 2 つのプロセスが作成されます。

参照してください... http://www.geekride.com/fork-forking-vs-threading-thread-linux-kernel/

于 2013-01-24T21:11:43.643 に答える