2012-09-15 62 views
0

克隆导致分段故障克隆会导致在C段故障++

代码:

#define STACKSIZE 16384 
int variable ; 
using namespace std ; 
int do_something(void *) { 
    variable = 42; 
return 0 ; 
} 

int main() { 
void *child_stack; 
variable = 9; 
child_stack = (void *) malloc(STACKSIZE); 
printf("The variable was %d\n", variable); 
clone(do_something, child_stack,CLONE_VM|CLONE_FILES,NULL); 
sleep(1); 
printf("The variable is now %d\n", variable); 
free(child_stack); 
return 0; 
} 
+1

我没有得到武汉理工大学你是什么意思? – sana

+0

这段代码只是一个示例,要测试clone()如果它工作的很好,那么我可以在我的projetc中使用它! – sana

+0

代码中唯一缺少的部分就是包含对发布不重要的声明! – sana

回答

3

阅读man page for clone

堆栈上运行Linux的所有处理器向下增长(除HP PA处理器),所以child_stack通常指向为子堆栈设置的内存空间的最高地址。

所以我想尝试这样的事:

char* child_stack = (char*) malloc(STACKSIZE); 
child_stack += STACKSIZE - 1; // set it to the topmost address 
           // of allocated space 

clone(do_something, (void*) child_stack, CLONE_VM|CLONE_FILES, NULL); 
+0

它的工作! ,,非常感谢..多谢。 :) – sana