通常当我需要在C中分叉时,我会这样做:
pid_t p = fork();
if(p == 0) { /* do child stuff */ }
else { /* do parent stuff and pray there wasn't an error */ }
Run Code Online (Sandbox Code Playgroud)
它发生在我身上,我可以抛弃额外的变量并使用:
if(fork() == 0) { /* child */ }
else { /* parent/pray */ }
Run Code Online (Sandbox Code Playgroud)
抛开不正确的错误处理,(为什么)这个工作/不工作?
Dio*_*lis 20
你的建议肯定会奏效.但是,在任何行为良好的应用程序中,错误处理都不是可选的.以下实现模式同样简洁并且还处理错误.此外,它将fork()返回值保存在pid变量中,以防您以后在父级中使用它,比如等待子级.
switch (pid = fork()) {
case -1: /* Failure */
/* ... */
case 0: /* Child */
/* ... */
default: /* Parent */
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
653 次 |
| 最近记录: |