2014-02-08 26 views
0

我在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] 

請幫助調試此問題。

+0

你可以發佈更多的代碼..足以編譯? – Dmitri

+0

'NewFunc()'看起來如何?它有什麼作用? – alk

回答

0

我希望父母在調試孩子本身時實際上執行printf語句。

爲什麼不使用fork/wait?