【Linux基础】fork函数

ork函数和一般的函数有着很大区别,fork函数执行一次却返回两个值。
1. fork函数说明
在进程中使用fork函数,则会创建一个新进程,新进程则称为子进程,原进程称为父进程。由于fork函数返回两个值,则这两个进程分别带回它们各自的返回值,其中父进程的返回值是子进程的进程号,而子进程则返回0.因此,可以通过返回值来判定该进程是父进程还是子进程。
使用fork函数得到的子进程是父进程的一个复制品,它从父进程处继承了整个进程的地址空间,包括进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设定、进程优先级、进程组号、当前工作目录、根目录、资源限制、控制终端等,而子进程所独有的只有它的进程号、资源使用和计时器等。因此可以看出,使用fork函数的代价是很大的,它复制了父进程中的代码段、数据段和堆栈段里的大部分内容,使得fork函数的执行速度并不很快。
2. fork函数语法
Fork()函数语法要点如表 6‑2所示

01.jpg (32.27 KB, 下载次数: 0)

下载附件 保存到相册 设为封面

2013-6-6 09:30 上传

3. fork函数实例
/*fork.c*/
#include<sys/types.h>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
pid_t result;
result=fork();
if(result==-1)
{
perror("fork error");
}
else if(result==0)
{
printf("current value is %d In child process,child PID = %d\n",result,getpid());
}
else
{
printf("current value is %d In father process,father PID=%d\n",result,getpid());
}
}
编译:
[root@localhost fork]# gcc –o fork fork.c
运行的结果:
[root@localhost fork]#./fork
current value is 0 In child process,child PID = 21273
current value is 21273 In father process,father PID=21272
从结果可以看出,子进程返回值等于0,而父进程返回子进程的进程号(>0).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值