理解Unix进程
2019-01-28 15:03:13 0 举报
AI智能生成
<<理解unix进程>>脑图
作者其他创作
大纲/内容
理解Unix进程
进程皆有父
系统调用
getppid
进程皆有资源限制
软硬限制
软限制可以被任意进程修改,超过程序会提示异常
硬限制仅仅能被root修改,受限于物理条件
软限制调整不可逆
常见限制
最大打开文件数
最大并发数
最大可创建文件大小
实践领域
性能压测,需要跳转打开连接数
限制第三方软件资源调用,防止被恶意占用
getrlimit
setrlimit
进程皆有环境
子进程继承父进程环境变量
环境对于进程是全局的
作用
作为命令行程序的输入
setenv
getenv
进程皆有退出码
范围通常是0~255
0通常表示正常退出,非0表示不同异常
exit
abort
raise
exit!
孤儿进程
父进程于子进程结束前结束
init会收养孤儿进程
僵尸进程
父进程不调用wait,子进程结束状态信息会被一直保留在内核,造成浪费
Z或者z,或者defunct都可以识别为僵尸
进程皆可互通
管道
可和子进程共享管道,用于父子通信
打开管道,两个进程各持有管道的一边,单向传递
套接字
可双向通信
tcp
mq
pipe
socketpair
send
生成终端进程
fork+exec 生成新进程取代子进程,但是不能被恢复
exec不会关闭打开资源
fork+exec 会导致资源的一定消耗
一个更省成本的替代:posix_spawn,但再也无法跟父进程共享资源
进程皆有标识
getpid
概念
进程的唯一标示符号
$$
当前pid
进程皆有文件描述符
unix一切都是文件
进程关闭,资源也会被关闭
描述符id可以重用
三个默认fd:0(stdin),1(stdout),2(stderr)
跟踪打开的资源
文件操作的核心
管道和网络编程的核心
open
close
read
write
fsync
stat
进程皆有参数
参数可以从外部传入程序
进程皆有名
运行期可以被修改
进程皆可衍生
子进程继承父进程的内存中所有内容,以及所有打开的文件描述符
ppid就是fork前的进程id
写时复制,子进程仅在需要修改副本时候才会把真实内容复制到进程,否则将和父进程共享读
fork返回两次,pid等于0是子,大于0为父
fork
进程可待
master/worker
衍生多个并发的子进程,并等待其退出
wait
wait2
waitpid
进程皆可接收信号
信号投递不可靠
kill -l 获取到所有信号和对应的数字
处理方式
默认
忽略
捕捉并定义hanlder
信号由一个进程发送给另一个进程
常见信号
term
立即结束
int
中断
kill
杀死
stop
停止
usr1
自定义
usr2
cont
继续
chld
子进程结束
hub
由控制终端终止时发出
kill和stop不可被捕捉和忽略,因为能提供一个可靠的关闭程序方式
进程通信
捕捉信号来做优雅重启等操作
singal
守护进程
后台运行,不受终端控制
守护进程的实现
进程组和会话组
会话组包含进程组,可发信号给旗下所有进程组
进程租包含一系列进程,向组长发信号,旗下的进程也会收到
0 条评论
下一页