c/c++语言开发共享使用fork()的子进程和父进程

我遇到了问题,我需要制作一个程序来制作9个子进程,之后我必须进行3秒的倒计时并使这9个进程等待来自父亲的信号,在他们收到这个信号后,每个孩子们应该说他是什么孩子(如果他是孩子#1,#2,#3等……,按照他们的顺序)。

我所做的就是在这里,一切都很好,我想,直到我作为一个孩子说的部分,我的号码是什么,我不知道怎么做,因为每个孩子都是不同的进程,他们不共享内存,信号不能使用参数,现在我在名为“处理程序”的函数上打印PID,但是如何打印我的号码,作为一个孩子?

#include  #include  #include  #include  #include  #include  void handler(int x); int main() { pid_t child[9]; pid_t child_pid; for (int i = 0; i < 9; ++i) { child_pid = fork(); child[i] = child_pid; if (child_pid == 0) break; if (child_pid < 0) { perror("fork()"); exit(EXIT_FAILURE); } } if (child_pid == 0) { signal(SIGUSR1, handler); pause(); } else { printf("Countdown:n"); sleep(1); printf("3n"); sleep(1); printf("2n"); sleep(1); printf("1n"); sleep(1); for (int i = 0; i < 9; i++) kill(child[i], SIGUSR1); waitpid(-1, NULL, 0); } return 0; } void handler(int sig) { printf("This is Child #%dn", getpid()); exit(0); } 

    创建一个全局变量:

     int my_number; 

    然后在创建子项的循环中,执行:

      if (child_pid == 0) { my_number = i; break; } 

    然后你可以在处理程序中使用变量:

     void handler(int sig) { printf("This is Child #%dn", my_number); exit(0); } 

      以上就是c/c++开发分享使用fork()的子进程和父进程相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/519267.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐