此题我分别做了两个实验,没有放到一个里面去.请大家分开复制.代码不是很长,也没有什么实际意义,就是区分一下两个模式.
1,用clone()的代码如下:(C++实现)
/*
作者:刘海涛
功能:在LINUX下,用clone建立线程.
环境:G++,Rad Hat Enterprise Linux,gedit
时间:2008.4.1
*/
#include<sched.h>
#include<iostream>
using namespace std;
int do_something(void *rag)
{
cout<<"child process do work"<<endl;
exit(0);
}
int main(int argc,char *argv[])
{
void *child_stack;
int FILE_STACK=20000; //这里一定要注意啊!!!
child_stack=(void *)malloc(FILE_STACK);
cout<<"parent process do work"<<endl;
//clone原型
int pid=clone(do_something,(char*)child_stack+FILE_STACK,CLONE_VM|CLONE_FILES,0);
if(pid==-1)
{
cout<<"can`t create,ERROR!";
exit(2);
}
sleep(1);
cout<<"DON`T TURN AWAY!"<<