浅谈对fork函数的理解
2012-04-19 20:08
211 查看
fork函数是用来创建进程时进行调用的系统函数,调用成功会有两个返回值,若调用不成功会返回-1;如果我们想对创建的进程进行操作就需要从它的反值入手,如果返回值为0这该进程为子进程其它则为父进程,一般fork函数会与wait函数一起用 wait函数是用在父进程中等待子进程死亡的,子进程死亡则wait成非阻塞函数,相反则阻塞。下面来看fork函数的嵌套调用:
#include<stdio.h>
#include<wait.h>
int main()
{
pid_t pid;
pid_t zpid;
pid=fork();
if(fork==-1)
{
printf("creat progress fail!!!\n ");
}
else if(pid==0)//该进程为子进程
{
zpid=fork();
if(zpid==-1)
{
printf("creat progress fail!!\n");
}
else if(zpid==0)
{
while(1);
//这是父进程中的子进程。
}
else
{
printf("this is father progress!\n");
wait(NULL);
//这表示的是父进程里要执行的东西 跟外面的fork创建的父进程是同级别的。
}
while(1);//让子进程一直执行
}
else
{
printf("this is father progress!\n");
wait(NULL);
}
}
#include<stdio.h>
#include<wait.h>
int main()
{
pid_t pid;
pid_t zpid;
pid=fork();
if(fork==-1)
{
printf("creat progress fail!!!\n ");
}
else if(pid==0)//该进程为子进程
{
zpid=fork();
if(zpid==-1)
{
printf("creat progress fail!!\n");
}
else if(zpid==0)
{
while(1);
//这是父进程中的子进程。
}
else
{
printf("this is father progress!\n");
wait(NULL);
//这表示的是父进程里要执行的东西 跟外面的fork创建的父进程是同级别的。
}
while(1);//让子进程一直执行
}
else
{
printf("this is father progress!\n");
wait(NULL);
}
}
相关文章推荐
- FORK()函数的理解
- 【Linux】fork函数的理解
- 20170907_关于 fork函数和父子进程的理解
- 【Linux】关于理解fork()函数的简单例子
- FORK()函数的理解
- fork()函数理解
- fork()函数的理解
- 关于理解Perl的fork函数的一个范例
- FORK()函数的理解
- fork()函数的理解
- 【Linux】fork函数的理解
- fork()函数的理解
- 《深入理解计算机系统》第八章 (一)关于子进程创建函数fork的理解
- 知名讲师fork()函数的理解
- 时间片轮转调度算法的提及和关于fork函数执行父,子进程先后顺序的理解
- fork函数的理解1
- 对fork函数理解
- 理解fork()函数
- fork()函数的理解
- linux fork函数理解