Linux进程控制编程(五)
2016-12-09 21:24
246 查看
一、进程创建
在pid=fork()之前,只有一个进程在执行,但在这条语句执行之后,就变成两个进程在执行了,这两个进程的共享代码段,将要执行的下一条语句都是if(pid==0). 两个进程中,原来就存在的那个进程被称作“父进程”,新出现的那个进程被称作“子进程”,父子进程的区别在于进程标识符(PID)不同.
例:
#include <unistd.h>
#include <stdio.h>
int main(void)
{
pid_t pid;
int count=0;
pid = fork();
count++;
printf( “count = %d\n", count );
return 0;
}
输出:
count = 1
count = 1
思考:
count++被父进程、子进程一共执行了两次,为什么count的第二次输出为什么不为2?
结果:
子进程的数据空间、堆栈空间都会从父进程得到一个拷贝,而不是共享。在子进程中对count进行加1的操作,并没有影响到父进程中的count值,父进程中的count值仍然为0
在pid=fork()之前,只有一个进程在执行,但在这条语句执行之后,就变成两个进程在执行了,这两个进程的共享代码段,将要执行的下一条语句都是if(pid==0). 两个进程中,原来就存在的那个进程被称作“父进程”,新出现的那个进程被称作“子进程”,父子进程的区别在于进程标识符(PID)不同.
例:
#include <unistd.h>
#include <stdio.h>
int main(void)
{
pid_t pid;
int count=0;
pid = fork();
count++;
printf( “count = %d\n", count );
return 0;
}
输出:
count = 1
count = 1
思考:
count++被父进程、子进程一共执行了两次,为什么count的第二次输出为什么不为2?
结果:
子进程的数据空间、堆栈空间都会从父进程得到一个拷贝,而不是共享。在子进程中对count进行加1的操作,并没有影响到父进程中的count值,父进程中的count值仍然为0
相关文章推荐
- linux 查看服务器出口IP
- 我的内核学习笔记12:linux i2c-gpio驱动应用实例
- CentOS 6.4系统下使用C语言访问Mysql
- 一天一个Linux基础命令删除文件或目录命令rm
- linux消息队列 .
- gedit 没有preference项,使preference回归,并用命令行设置行号,解决centos7下中文乱码,text wrapping等问题
- Linux NFS服务器的安装与配置
- linux系统的7种运行级别
- Linux 中 Kill -2 和 Kill -9 的区别
- 二、linux目录结构
- confstr--Linux下获取C标准库信息的函数
- 一、linux常用的命令
- linux rhel7 dock6.7安装
- CentOS7安装配置MySQL5.6.34
- You CompleteMe插件安装 - linux
- UDP通信recvfrom返回invalid argument
- 高手总结的“恋爱法”学习Linux系统,效果更好。
- 利用virtualbox增强器实现本机与kali linux的文件共享(macOS)
- Linux LVM逻辑卷配置过程详解(创建,增加,减少,删除,卸载
- Linux中 /var/log/ 中的各个文件的含义