【Linux基础】fork函数
来源:互联网 发布:dnf网络交易平台 编辑:程序博客网 时间:2024/06/05 01:16
ork函数和一般的函数有着很大区别,fork函数执行一次却返回两个值。
1.fork函数说明
在进程中使用fork函数,则会创建一个新进程,新进程则称为子进程,原进程称为父进程。由于fork函数返回两个值,则这两个进程分别带回它们各自的返回值,其中父进程的返回值是子进程的进程号,而子进程则返回0.因此,可以通过返回值来判定该进程是父进程还是子进程。
使用fork函数得到的子进程是父进程的一个复制品,它从父进程处继承了整个进程的地址空间,包括进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设定、进程优先级、进程组号、当前工作目录、根目录、资源限制、控制终端等,而子进程所独有的只有它的进程号、资源使用和计时器等。因此可以看出,使用fork函数的代价是很大的,它复制了父进程中的代码段、数据段和堆栈段里的大部分内容,使得fork函数的执行速度并不很快。
2.fork函数语法
Fork()函数语法要点如表 6‑2所示
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).
本文转载于唯C教育,【Linux基础】fork函数
http://www.weicedu.com/forum.php?mod=viewthread&tid=111&fromuid=4
(出处: http://www.weicedu.com/)
http://www.weicedu.com/forum.php?mod=viewthread&tid=111&fromuid=4
(出处: http://www.weicedu.com/)
- 【Linux基础】fork函数
- 零基础学习linux中的fork()函数
- linux基础-fork
- linux fork() 函数学习
- linux fork()函数学习
- linux fork函数学习
- linux fork()函数学习
- linux fork函数浅析
- Linux fork()函数学习
- linux C fork函数
- linux fork函数浅析
- fork()函数 Linux
- fork()函数 Linux
- linux fork函数浅析
- linux fork函数浅析
- linux fork 函数解析
- linux fork函数浅析
- Linux fork函数
- 关于android studio 编译报错的一点小心得
- Java程序性能调优步骤
- Oracle的ole db连接字符串
- Java内存模型
- linux下mysql的安装过程
- 【Linux基础】fork函数
- Java常用类库
- thinkphp dwz 方法 前置 后置
- 盘点不可忽视的14家大数据创业公司
- php解析JSON
- 什么是bash shell的内建(build in)命令
- Virtualbox 挂载文件夹
- jacob操作word参考资料2
- daemon 进程为什么要fork两次