fork
fork的意思是复制进程,就是把当前的程序再加载一次,加载后,所有的状态和当前进程是一样的(包括变量)。fork不象线程需提供一个函数做为入口, fork后,新进程的入口就在 fork的下一条语句。
返回值为pid_t,实际是unsigned int
:子进程中为0,父进程中为子进程ID,出错则为-1。
开始写了几个都不成功,最后终于成功了:
pid_t p = getpid(); // 需要 #include <sys/types.h>
printf("before fork(), pid = %d\n\n", p);
int n=0;
pid_t pid=-1;
while(n<5 && pid!=0)
{
pid = fork();
if(getpid()!=p) //是创建的子进程,不是原进程
{
printf("child pid:%d ",getpid());
printf("parent pid:%d\n",getppid());
printf("\n\n");
//sleep(2);
}
waitpid(pid,NULL,0); //父进程等待子进程执行后,才能继续fork其他子进程
n++;
}
结果如下:
网上抄来抄去的一个程序是这样的,逻辑大致相同:
pid_t p1;
for(i=0;i<4;i++)
{
if((p1=