1.Linux进程--进程标识号
函数原型
pid_t fork(void);
fork的奇异之处在于它被调用一次,却返回两次,它可能有三种不同的返回值:
1、在父进程中。fork返回新创建的子进程的PID
2、在子进程中,fork返回0。
3、假设出现错误,fork返回一个负值。
用途:
1、一个进程希望复制自身。从而父子进程能同一时候运行不同段的代码。
2、进程想运行另外一个程序
#include <sys/types.h>
#include <unistd.h>
int main(){
pid_t pid;
/*此时仅有一个进程*/
pid = fork();
/*此时已有两个进程在同一时候运行*/
if( pid < 0)
printf("error in fork!\n");
else if(pid == 0)
printf("I am the child process, ID is %d\n",getpid());
else
printf("I am the parent process, ID is %d\n",getpid());
return 0;
}
在 pid = fork() 之前,仅仅有一个进程在运行,但在这条语句之后。就变成两个进程在运行了,这两个进程共享代码段。将要运行的下一条语句就是 pid = fork() 之后的语句。两个进程中,原来就存在的那个进程被称作为”父进程”,新出现的那个进程被作为”子进程”,父子进程的差别在于进程标识符(PID)不同。
子进程的数据空间、堆栈空间都会从父进程得到一个拷贝,而不是共享。
pid_t vfork(void);
1、在父进程中,fork返回新创建的子进程的PID
2、在子进程中。fork返回0。
3、假设出现错误,fork返回一个负值。
用途:
用vfork创建的进程主要目的是用exec函数族运行另外的程序,与fork的第二个用途同样
fork 和 vfork 的差别
fork:子进程拷贝父进程的数据段。堆栈。
vfork:子进程与父进程共享数据段,堆栈。
fork:父、子进程的运行次序不确定
vfork:子进程先运行,父进程后运行
- 本文已收录于下面专栏:
1.Linux进程--进程标识号的更多相关文章
- Linux 查看进程基本命令
https://www.cnblogs.com/zwgblog/p/5971455.html https://www.cnblogs.com/lcword/p/6046261.html https:/ ...
- Linux学习笔记(16)Linux前后台进程切换(fg/bg/jobs/ctrl+z)
关键词:Linux前后台进程切换,linux进程切换 fg.bg.jobs.&.ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的一.& ...
- linux管理进程的链表
linux2.6.11的内核中,为了方便管理linux的进程,主要建了5种linux链表.每个链表节点之间的互联有两种方式,一种是hash节点之间的互联,通过hlist_node的数据结构来实现:另一 ...
- [转载]了解Linux的进程与线程
本文转自Tim Yang的博客http://timyang.net/linux/linux-process/ .对于理解Linux的进程与线程非常有帮助.支持原创.尊重原创,分享知识! 上周碰到部署在 ...
- Linux任务调度进程crontab的使用方法和注意事项
参考文章:Linux任务调度进程crond命令的使用方法和注意事项 一.crond简介 概念 crond的概念和crontab是不可分割的.crontab是一个命令,常见于Unix和类Unix的操作系 ...
- Linux 利用进程打开的文件描述符(/proc)恢复被误删文件
Linux 利用进程打开的文件描述符(/proc)恢复被误删文件 在 windows 上删除文件时,如果文件还在使用中,会提示一个错误:但是在 linux 上删除文件时,无论文件是否在使用中,甚至是还 ...
- linux 下进程通讯详解
linux 下进程通讯方法主要有以下六种: 1.管道 2.信号 3.共享内存 4.消息队列 5.信号量 6.socket
- .NET跨平台实践:用C#开发Linux守护进程
Linux守护进程(Daemon)是Linux的后台服务进程,它脱离了与控制终端的关联,直接由Linux init进程管理其生命周期,即使你关闭了控制台,daemon也能在后台正常工作. 一句话,为L ...
- .NET跨平台实践:用C#开发Linux守护进程(转)
Linux守护进程(Daemon)是Linux的后台服务进程,它脱离了与控制终端的关联,直接由Linux init进程管理其生命周期,即使你关闭了控制台,daemon也能在后台正常工作. 一句话,为L ...
随机推荐
- LeetCode(26): 删除排序数组中的重复项
Easy! 题目描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间 ...
- poj2464扫描线好题,回头再做
扫描线+区间更新 题解 /* st[i],ol[i]表示y坐标大于y[i]和小于y[i]的点 两颗线段树建立在y轴上,区间[l,r]ol线选在[l,r]时st的分数 每次查询完成后再更新一次 遍历每条 ...
- Spring 核心API
BeanFactory: 这是一个工厂,用于生产任意Bean,采用延迟加载,第一次getBean时才会加载 ApplicationContext: 是BeanFactory的一个子接口,功能更强大(国 ...
- 《剑指offer》-旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数 ...
- 【C++ Primer 第11章】2. 关联容器操作
练习答案 一.访问元素 关联容器额外类型别名 key_type 此容器类型的关键字类型 mapped_type 每个关键字关联的类型,只 适用于map mapped_type 对于set,与key_ ...
- J 判断二叉树每个结点的权值是否关于根节点完全对称
如果二叉树每个结点的权值关于根节点完全对称 就输出Yes Sample Input 27 //结点1 2 3 //结点1的左孩子是结点2 右孩子是结点32 4 53 6 74 0 05 0 06 0 ...
- DFS基础题
hdu 1241 油田 裸DFS 题意:@代表油田 8个方向上还有@就相连 相当于求图中连通子图的个数Sample Input1 1 // n m*3 5*@*@***@***@*@*1 8@@** ...
- 记一次Oracle分区表错误:ORA-14400: 插入的分区关键字未映射到任何分区
https://blog.csdn.net/xdyzgjy/article/details/42238735
- guava常用
教程: http://www.yiibai.com/guava/ http://ifeve.com/google-guava/ optional 注意java8同样提供optional,区分 意义: ...
- HDU3038 How Many Answers Are Wrong 并查集
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - HDU3038 题意概括 有一个序列,共n个数,可正可负. 现在有m个结论.n<=200000,m< ...