当前位置:  开发笔记 > 编程语言 > 正文

在C中分叉 - 无限循环?

如何解决《在C中分叉-无限循环?》经验,为你挑选了1个好方法。



1> John Hascall..:

最大的问题是你孩子的代码:

if (pid == 0) {
    ....
}

属于父代码的同一个循环(就在右边):

if (pid != 0) {
    ....
}

此外,您永远不会检查pid == -1(fork()失败).

写这样的更标准的方法是:

switch (pid = fork()) {
    case -1:
         /* handle fork error */
         exit(1);
    case 0:
         /* child code goes here */
         _exit(0);
    default:
         /* parent code goes here */
}
/* Also you probably want to look into the `wait()` syscall. */
do {} while (wait(NULL) != -1);       /* <--- the very minimum */

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有