进程控制——创建,终止
目录
1.进程的创建
fork函数初识
fork函数返回值
写时拷贝
fork常规用法
2.进程终止
进程退出场景
进程常见退出方法
进程退出返回值的意义:
1.进程的创建
fork函数初识
在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。
pid_t fork(void)--通过复制父进程创建一个新的子进程
特点:代码共享,数据独有
返回值:对于父进程返回新创建的子进程的pid;对于子进程返回0;出错创建失败返回-1。
可以通过返回值进行代码分流,让父子进程进入不同的if语句分支进行运行
进程调用fork,当控制转移到内核中的fork代码后,内核做:
·分配新的内存块和内核数据结构给子进程
·将父进程部分数据结构内容拷贝至子进程
·添加子进程到系统进程列表当中
·fork返回,开始调度器调度
实例:
#include <stdio.h>
#include <unistd.h>int main()
{printf("hello world!\n");pid_t ret=fork();printf("i am over!\n");return 0;
}
运行结果:
hello world!
i am over!
i am over!
所以,fork之前父进程独立执行,fork之后,父子两个执行流分别执行。注意,fork之后,谁先执行完全由调度器 决定。
fork函数返回值
子进程返回0
父进程返回的是子进程的pid
写时拷贝
子进程复制了父进程中的大部分的信息,因此子进程有自己的变量,但是自己的变量经过页表映射后与父进程访问的是同一块物理内存,当这块内存空间中的数据即将要修改,则给子进程重新开辟内存空间,并拷贝数据过去。
fork常规用法
·一个父进程希望复制自己,使父子进程同时执行不同的代码段。例如,父进程等待客户端请求,生成子 进程来处理请求。
·一个进程要执行一个不同的程序。例如子进程从fork返回后,调用exec函数。
2.进程终止
进程退出场景
代码运行完毕,结果正确
代码运行完毕,结果不正确
代码异常终止
进程常见退出方法
正常终止:
1.在main函数中return 返回(仅在main函数中使用是退出程序运行)
2.库函数:void exit(int retval)--在任意位置调用,都可以退出程序运行
3.系统调用接口:void _exit(int retval)--在任意位置调用,都可以退出程序运行
exit和_exit的区别:退出程序运行前,exit会将缓冲区的数据刷新写入文件中,而_exit不会。
异常终止:
ctrl+c ,信号终止
实例:
int main()
{printf("hello");exit(0);
}
运行结果:
[root@localhost linux]# ./a.out hello
[root@localhost linux]#
int main()
{printf("hello");_exit(0);
}
运行结果:
[root@localhost linux]# ./a.out
[root@localhost linux]#
进程退出返回值的意义:
return以及exit给与的数据其实就是进程的退出码
作用:
一个程序运行起来是为完成一个任务,这个任务完成的怎样外界如何得知?
因此就必须有这个进程的退出码,来表示进程任务处理的结果
进程控制——创建,终止相关推荐
- Linux_进程控制(创建进程,等待进程,进程终止)
文章目录 1.创建进程 1.1 fork()函数初识 1.2 fork()创建进程代码示例 2.等待进程 2.1 进程等待概念 2.2进程等待必要性 2.3 进程等待方法 2.3.1 wait 2.3 ...
- 操作系统(二 )| 进程管理初探(前趋图、程序执行、进程的定义特征基本状态,进程的创建终止,阻塞唤醒,挂起激活)
文章目录 前趋图和程序执行 前趋图 程序的顺序执行 程序的并发执行 进程的定义和特征 进程的基本状态 就绪状态 运行状态 阻塞状态 挂起状态 进程控制块(PCB) 作用: 块中信息: PCB的组织方式 ...
- Linux 进程控制(创建/退出/等待/替换)
目录 进程创建 fork()函数 fork返回值 fork写时拷贝 fork失败原因 fork用法 进程退出 退出场景 常见的退出方法 正常退出 异常退出 _exit()系统调用 exit()函数 _ ...
- Linux——详解进程控制之终止
目录 一.进程终止概念 二.return.exit()._exit()含义使用与相互关系 ①_exit() ②exit() ③return ④相互关系 三.查看终止信息 ①strerror ②echo ...
- 【Linux】进程控制(创建、终止、等待)
环境:centos7.6,腾讯云服务器 Linux文章都放在了专栏:[Linux]欢迎支持订阅 相关文章推荐: [Linux]冯.诺依曼体系结构与操作系统 [Linux]进程理解与学习Ⅰ-进程概念 [ ...
- 进程控制-创建、退出、等待、替换
目录 进程创建 1.子进程继承 2.写时拷贝 进程退出 echo $? 退出码 进程异常退出的情况模拟: 退出进程的方式 退出码的意义: 进程退出,在系统中发生了什么? 进程等待 为什么要有进程等待呢 ...
- 【操作系统/OS笔记09】线程、线程的实现、上下文切换、进程控制
本次笔记内容: 7.8 为什么使用线程 7.9 什么是线程 7.10 线程的实现 7.11 上下文切换 7.12 进程控制--创建进程 7.13 进程控制--加载和执行进程 7.14 进程控制--等待 ...
- 模拟进程创建、终止、阻塞、唤醒原语_操作系统基础8-进程及进程控制
进程(Process) 的定义 从不同的角度,进程可以有不同的定义,传统典型的定义: 进程是程序的一次执行过程. 或者:一个正在执行的程序的实例 进程是一个程序及其数据在处理机上顺序执行所发生的活动 ...
- 进程控制:进程的创建、终止、阻塞、唤醒和切换
进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程.撤销已有进程.实现进程状态转换等功能.在操作系统中,一般把进程控制用的程序段称为原语,原语的特点是执行期间不允许中断,它是一个不 ...
最新文章
- 23行代码_动图展示——快排详解(排序最快的经典算法)
- JPA + EclipseLink + SAP云平台 = 运行在云端的数据库应用
- java发送http跨域_跨域发送HTTP请求详解
- 大数据入门初学者需要学习的内容及学习路线详解
- 【滑动窗口】leetcode209:长度最小的子数组
- RDKit 安装教程
- 微信公众账号api开发
- MacBook将大文件分割成很多个小文件split命
- 使用paddlepaddle进行手写数字识别
- 腾讯2017秋招笔试编程题--游戏任务标记
- 实践一 网络攻防环境的搭建
- BOJ 1433 Tom 的潜望镜 优先队列+BFS
- EXCEL将一个单元格分成3个区域
- 乘法原理的例题和答案_加法原理与乘法原理练习题
- 人工智能在游戏设计中的应用
- 从PDF直接复制粘贴过来可以吗?其他软件的数据怎么导入Excel?
- 计算机安装Hp1005打印机,如何安装hp1005打印机驱动程序_安装步骤是什么
- 国内IDC数据中心星级评判标准怎么划分
- GPS北斗授时服务,NTP让网络时钟同步更精确
- 英语四六级写作救命万能表达