fork--用于进程管理的系统调用
来源:互联网 发布:西工大编程社区 编辑:程序博客网 时间:2024/05/02 00:00
fork作用:
创建一个原有进程的精确副本,包括所有的文件描述符,寄存器等全部内容。
父进程与子进程的关系:
#include "unistd.h";#include "sys/types.h";void main(){ pid_t pid; pid = fork(); if(pid < 0) printf("error in fork"); else if(pid == 0) printf("I'm the child process, my process ID is %d\n", getpid()); else printf("I'm the parent process, my process ID is %d\n", getpid());}
结果是:
[root@xxxxx]# ./a.outI'm the child process, my process ID is 5146I'm the parent process, my process ID is 5145
为什么这两行都打印出来了?
在fork之后,操作系统会复制一个与父进程完全相同的子进程,这两个进程共享代码空间,但是数据空间是互相独立的,子进程数据空间中的内容是父进程的完整拷贝,指令指针也完全相同,但只有一点不同:
1. 如果fork成功,子进程中fork的返回值是0,父进程中的fork返回值是子进程的进程号;2. 如果fork不成功,父进程会返回错误;
创建进程成功后,系统中出现两个基本完全相同的进程,这两个进程执行没有固定的先后顺序,哪个进程先执行要看操作系统的进程调度策略。每个进程都有一个独特的进程标识符(process ID),可以通过getpid()函数获得变量的值。
值得注意的是:1.父进程和子进程的变量都是相互独立的,存在不同的地址中,并不是共用的;2.fork只是把当前的情况拷贝一份,执行fork时,进程已经执行完了fork之前的代码。fork只拷贝下一个要执行的代码到新的进程。
0 0
- fork--用于进程管理的系统调用
- 进程管理(一) fork系统调用
- Parallel::ForkManage: 一个简单的并行进程用于fork管理:
- 【进程管理】系统调用fork(),vfork()与clone()
- fork系统调用创建进程
- 从系统调用fork,到进程的创建与终止
- Linux 系统调用之 fork()——进程的创建
- 进程管理相关的系统调用二
- 进程管理相关的系统调用
- fork()系统调用的特性
- linux系统下 fork()系统调用: 关于父子进程缓存问题的小坑
- Linux进程管理fork的理解
- 【进程管理】系统调用execve()
- 【进程管理】系统调用exit()
- 【进程管理】系统调用wait4()
- 进程系统调用——fork函数的深入理解使用
- 进程管理--fork函数
- 避免linux系统调用fork后产生僵死进程
- 第十六周项目1—
- 代码写累了,搞点福利看看
- 2016.12.21
- 【java】Java陷阱之assert关键字
- android studio debug no such instance field
- fork--用于进程管理的系统调用
- SAP BI工具的优缺点
- Apache搭建web网站服务器
- 数据访问层中间件学习笔记
- C++学习笔记-----operator=函数处理自赋值
- rtems实时性的实现思想
- centos6.7 mini 安装hadoop2.7.3完全分布式
- c语言小游戏,推箱子
- new delete