通过孩子访问父母

时间:2013-01-24 21:08:26

标签: c multithreading fork

基本上,我有这个功能。在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();
      }
    }

2 个答案:

答案 0 :(得分:1)

要做到这一点,你想采取两种方法之一...

  1. 使用signal(7)socket(7)
  2. 等消息API发送消息
  3. 如果你真的想调整孩子的记忆,你不想fork(2)a thread library.

答案 1 :(得分:0)

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

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