通常当我需要在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 */ }
抛开不正确的错误处理,(为什么)这个工作/不工作?
你的建议肯定会奏效.但是,在任何行为良好的应用程序中,错误处理都不是可选的.以下实现模式同样简洁并且还处理错误.此外,它将fork()返回值保存在pid变量中,以防您以后在父级中使用它,比如等待子级.
switch (pid = fork()) { case -1: /* Failure */ /* ... */ case 0: /* Child */ /* ... */ default: /* Parent */ /* ... */ }