【发布时间】:2012-11-30 23:16:20
【问题描述】:
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
...
有什么建议吗?
【问题讨论】:
-
child_thread()函数有什么作用? -
@Joachim Isaksson,
sleep(20)然后退出。