前述のように、フォーク呼び出しの値を保存する必要があります。あなたは本当にフォークのif以上のものを使うべきです。3つのケースがあります:
- 0:あなたは子プロセスです
0:あなたは親であり、子PIDを取り戻しました
- -1:何か恐ろしいことが起こり、フォークが失敗しました
あなたは本当にケース3について知りたいです、それはあなたの一日を台無しにするでしょう。(また、exec呼び出し)
int main() {
int pid = fork();
if(-1 == pid) {
fprintf(stderr, "Big problems forking %s\n", strerror(errno);
exit(-1);//or whatever
}
else if (0 == pid) {
if (-1 == execvp(cmdName,cmdParam)) {
//like above, get some output about what happened
}
}
//no need to else here, execvp shouldn't return
// if it does you've taken care of it above
waitpid(pid, NULL, 0);
printf("Resuming main()...");
}
return(0); }