Unix C学习笔记10 进程的概念,相关命令,父子孤尸,进程标识,创建子进程

进程的概念

相关命令

 

pstree显示bash进程

 

ps显示进程,以快照方式,显示某一瞬间进程状态

 

ps aux

 

 

top显示实时进程信息,会动态变化

父子孤尸

进程标识

会重用,但不会立马重用PID

 

 

父进程为bash

su root:切换用户为root

chmod u+s idroot:给idroot加设置用户ID位

rwx变为rws

 切换回tarena普通用户

 

 用tarena运行有用户ID位的idroot,有效用户ID对应为root(不是PID),该进程有root的权限

 创建子进程

fork函数 创建子进程

给父进程返回子进程PID,给子进程返回0

进程数量上限

 父进程执行内容为

fork成功之后,创建的子进程执行内容为

fork的返回值pid在父进程中为子进程编号35151,在子进程中为0

 增加return 0进程结束

 

让子进程专门执行的内容,写到if分支,然后return 0

 

 

 

 

 

没有限制子进程的执行

 二的三次方,2X2X2

代码区存在变量a=10,子进程将a改为20,父进程再来访问a的值变为20,有没有可能因为共享内存导致子进程将父进程的值更改?

没有可能,因为代码区不可修改,代码区存储的是具有常属性的,已经初始化的全局变量或者静态局部变量/函数地址/字面值常量(字符串)的地址

子进程拷贝后,物理内存不同,但是映射到相同的虚拟地址,两个进程有各自的内存映射表

相当于父楼的6单元101与子楼的6单元101

子进程更改自己内存的值,不影响父进程

 

进程中内核会维护进程表,进程表中有文件描述符表,进程调用open函数后,生成文件描述符对应的文件表项和v节点,此时创建子进程,子进程拥有子进程的进程表,该进程表的文件描述符表复制于父进程,父子进程相同的文件描述符对应同一个文件表项,子进程也可通过文件描述符操作该文件,父子进程共用一个文件表项,共享读写位置

只有当文件表项对应的所有文件描述符被关闭,文件表项才会被释放(dup同理),所以子进程最好也close(fd);

进程结束,系统会自动将打开的文件关闭,但对于运行时间久的进程来说,未被释放的文件表项会一直占用内存

孤儿院进程演示

12.04以前孤儿院进程pid为1

僵尸进程演示

 

 通过ps aux查看

 按回车,结束父进程,父子进程都被回收

程序结束,系统内核会自动收子进程僵尸

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值