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语言教程-李慧芹老师-第十五章/