void *stack;
stack = malloc(STACK_SIZE);
if (-1 == clone(child_thread, stack + STACK_SIZE, 0, NULL)) {
perror("clone failed:");
}
while(waitid(P_ALL, 0, NULL, WEXITED) != 0){
perror("waitid failed:");
sleep(1);
}
マニュアルには次のように書かれています。
子がすでに状態を変更している場合、これらの呼び出しはすぐに戻ります。それ以外の場合は、いずれかの子が状態を変更するまでブロックします
しかし実際にはすぐに戻ります:
waitid failed:: No child processes
waitid failed:: No child processes
...
何かアドバイス?