我需要克隆()系统调用一些帮助。 我想使用它与标志CLONE_CHILD_CLEARTID,但我不能看到我指定为参数的字段的值的任何更改。 这是一个简单的代码:克隆和CLONE_CHILD_CLEARTID标志
int the_child(){
exit(0);
}
int main(int argc, char * argv[])
{
pid_t child_id = 99;
printf("child %p\n",child_id);
clone((int (*)(void *))the_child,
NULL,
CLONE_VM | CLONE_CHILD_CLEARTID | SIGCHLD,
NULL, NULL,NULL, child_id);
sleep(1);
printf("child %p\n",child_id);
}
然而,当两个printf的显示总是99,什么是我做错了什么?
我编辑了代码并在'clone'中使用了'&child_id',但没有任何变化:( – Federico 2012-03-24 14:09:30
我的不好。接缝,我不能'NULL'值为子堆栈 – Federico 2012-03-24 14:33:13
@Federico其实对于'sys_clone'系统调用,其中最重要的是实现了库函数'clone','child_stack'可以为零。当你使用库函数时,可能不会。当你为孩子提供适当的栈后,'tid清除功能? – 2012-03-24 15:49:18