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

fork()作为参数

如何解决《fork()作为参数》经验,为你挑选了1个好方法。

通常当我需要在C中分叉时,我会这样做:

pid_t p = fork();
if(p == 0) { /* do child stuff */ }
else { /* do parent stuff and pray there wasn't an error */ }

它发生在我身上,我可以抛弃额外的变量并使用:

if(fork() == 0) { /* child */ }
else { /* parent/pray */ }

抛开不正确的错误处理,(为什么)这个工作/不工作?



1> Diomidis Spi..:

你的建议肯定会奏效.但是,在任何行为良好的应用程序中,错误处理都不是可选的.以下实现模式同样简洁并且还处理错误.此外,它将fork()返回值保存在pid变量中,以防您以后在父级中使用它,比如等待子级.

switch (pid = fork()) {
case -1:       /* Failure */
  /* ... */
case 0:        /* Child */
  /* ... */
default:       /* Parent */
  /* ... */
}

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