从相关函数返回后,克隆系统调用退出

时间:2014-02-08 20:09:07

标签: c multithreading operating-system gdb pthreads

我在C中有一个克隆系统调用,它将调用子函数,执行子函数然后返回父级执行一些代码。子进程成功执行,控制返回克隆语句。然后克隆语句崩溃,程序执行终止。

我的C代码是:

    void *stack;
    stack=(void *)calloc(1,16384); 
    stack+=16384;
    clone(NewFunc, stack, CLONE_VM|CLONE_FILES, NULL);
            printf ("Control has returned from clone\n");

从我的NewFunc函数返回控制后,程序执行停止,控件不转移到以下printf语句。这些是我在gdb中的错误消息:

(gdb)
clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:117
117             movq    %rax, %rdi
(gdb)
118             call    HIDDEN_JUMPTARGET (_exit)
(gdb)
[Inferior 1 (process 16603) exited normally]

请帮助调试此问题。

1 个答案:

答案 0 :(得分:0)

我希望在你调试孩子本身时,父实际上会执行printf语句。

为什么不使用fork / wait?