1
1楼 hoho_zhao 2009-2-22 18:19 #include <sched.h>
#include <stdio.h> #include <unistd.h> #include <stdlib.h> int fn() { sleep(10); return 0; } int main() { void *child_stack_1 = malloc(1634 //void *child_stack_2 = malloc(1634 clone(fn, &child_stack_1, CLONE_VM|CLONE_SIGHAND, NULL); sleep(10); return 0; } 如果没有注释掉第二个 malloc ,程序就段错误!郁闷,怎么也想不明白到底怎么回事 注:编译、运行环境为 rhel5 2.6.18 gcc 4.1.1 折腾了几个小时不得其解,于是上来请教大家了。 已经有1年多没有玩过Linux C 编程了,今天突然想学学多进程,结果就这样了:( 2楼 MMMIX 2009-2-22 20:28 1. 代码用 [code][/code] 括起来
2. 创建进程不要用 clone,用 fork 3楼 hoho_zhao 2009-2-22 20:54 晕,谢谢:)
我……真的打算放弃clone了,呵呵。 本来就是用 fork() 的,但是 clone() 说它能轻松实现父子进程内存共享, 于是我就放弃 fork() 转向 clone(),不过 clone() 只能用在 Linux 平台, 可移植性不好,呵呵,还是转回来问问 fork() 老大哥吧:)
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源
| ||||||||||||||||||||||||||||||||||||||||||||