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
...
有什么建议吗?