Linux下C语言教程-李慧芹老师-第十五章
目录
进程基本知识
已经进入多进程阶段
进程标识符pid
类型pid_t,传统意义上是一个16位有符号整型数。
命令ps
常用命令:ps axf,ps aux,ps axm,ps ax -L
进程号是顺次向下使用
1 | |
进程的产生
pid_t fork();
- 以复制(duplicating)当前进程的方式创建一个新进程
- 和
setjmp一样,执行一次,返回两次 - 在
fork处复制,不会从头运行
fork后父子进程的不同之处:
fork的返回值不一样pid不同ppid也不同- 未决信号和文件锁不继承
- 资源利用量清0
init进程:1号,是所有进程的祖先进程
调度器的调度策略来决定哪个进程先执行
fflush()的重要性
1 | |
进程的消亡及释放资源
1 | |
分配法和交叉分配法,90%优先选择交叉分配法。
池类算法:
上游往池子里放任务,下游三个线程从池子里取任务。
exec函数族
eg. bash进程创建primer进程
1 | |
用户权限及组权限
u+s:如果文件是可执行的,则执行文件时,是以文件的拥有者的权限执行的。
1 | |
所以普通用户执行passwd时,是以root的权限执行的。
g+s:如果文件是可执行的,则执行文件时,是以文件的所在组的权限执行的。
uid和gid都有三种类型:
real uid:进程的实际所有者effective uid:进程的有效所有者saved uid:进程的保存的有效所有者
1 | |
1 | |
观摩课:解释器文件
unix讲究机制而非策略
脚本,后缀名是什么都可以,一般用sh, exec
1 | |
#!是一种约定俗成的标记,告诉系统这个脚本应该用什么解释器来执行。
system()函数
1 | |
相当于fork+exec+wait的封装
进程会计
1 | |
进程时间
1 | |
守护进程
- 守护进程
PPID为1 - 守护进程没有控制终端,
TTY为? PID, PGID, SID相同
1 | |
会话(session):一个或多个进程组的集合,以
sid为标识pid_t setsid(void);setsid必须由非leader进程调用,从而创建一个新的会话。- 前台进程组:正在与终端交互的进程组
- 后台进程组:正在运行,但不与终端交互的进程组
终端:
我们接触的都是虚拟终端
单实例守护进程:锁文件/var/run/name.pid
启动脚本文件:/etc/rc*...
系统日志
syslogd服务
1 | |
1 | |
Linux下C语言教程-李慧芹老师-第十五章
http://sinlatansen.github.io/2024/05/16/Linux下C语言教程-李慧芹老师-第十五章/