|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
进程指正在运行的程序,资源分配的最小单位,可以通过“ps ”或“top”等命令查看正在运行的进程,线程是系统的最小调度单位,一个进程可以拥有多个线程,同一进程里的线程可以共享此进程的同一资源。本章代码在process/目录下。3 r' h* \& g' p+ S- R0 x* D
进程类型:8 _8 g- G, d6 Q2 O# a; C9 P+ [5 Y
1.交互进程:由shell启动,用户和计算机进行问答的进程。
4 {( c0 M0 P& w* b2 X- X0 B/ N2.批处理进程:不与特定终端相关联,将任务提交到等待队列按顺序执行的进程。! O) z q# i$ R ]: h% W
3.守护进程:后台运行的特殊进程,用户不能和它进行会话。) _. W+ \; R( P/ T5 I8 w: F
进程的三种状态:5 ^# i$ G% u4 I+ m, t$ o$ c& o# P N0 |3 `" l
& F: W, B2 I# q7 O. j
1.运行态,正在运行或在运行队列中等待。
; H( O+ k1 W8 b5 L( y) `2.可中断等待态,休眠, 在等待申请的资源有效或等待中断,信号唤醒。
8 V& I# A7 Z: M* L' t7 d3.不可中断等待态,休眠等待资源有效,不能被中断或信号唤醒。# a- ` T4 P* c& z
4.终止态,进程被停止或者被跟踪状态,收到SIGCONT信号时,又会恢复运行状态。 E1 Q; m3 J; w$ |
5.僵尸态,进程因某种原因而中止运行,但进程描述符仍存在,不可被Kill。- Z6 n! e* r1 w4 e; z; m7 j" d
如果想销毁某一进程,可在终端输入“ps -elf”查看进程号,如图 66.2:
" [' [- w5 }1 ^$ M8 k, s/ s 2 j6 V) V% h& p6 f* D
如果要销毁qtcreator进程,使用“kill -9 3001”可以销毁它,
7 B: e0 ~+ d5 q3 B8 B( D+ W7 e![]()
2 Z+ |. L2 T% n' n2 l" l+ e1进程创建
& O- f g2 ~5 I# d& Z$ b. P6 O8 ^所有的进程都是由其他进程创建(除了pid为0号的idle进程),pid号为1的init进程是系统启动后运行的第一个进程,是所有进程的父进程,init进程会初始化一部分系统服务,创建其他进程。
3 [; H# T7 D0 b/ I/ b% w: }" i R创建新进程的那个进程称为父进程,新进程称为子进程,父进程和子进程拥有相同的代码段数据段,有各自独立的地址空间。采用写时拷贝技术,即创建的新进程不会立即把父进程的资源空间复制过来,只有在修改时才会复制资源,另外父进程挂起的信号和文件锁不会被子进程继承。7 r' y1 }3 d: |, ?6 J; {5 s
子进程结束后,它的父进程要回收它的资源,否则就会成为僵尸进程 。% Q; {3 |5 X8 K1 ?0 D& |0 r" Z' _
如果父进程先结束,子进程会被init进程收养,称为孤儿进程。
. L9 M+ m* K! X" j* J终端输入“ps -el”查看进程状态,PID为进程号,PPID为此进程的父进程号,如图 1.1,1505号进程的父进程为1366进程。% \: t' [0 }" m
![]()
# T+ }/ F O- {5 N d- T![]()
- I3 O! z- V& { [3 ngetpid():获取进程PID,; K: p+ [, x8 f- r
![]()
* \ a* E$ ]* y, I( i6 @; s返回值为PID号。
6 y2 _" Q. S: |4 ]0 ufork():系统调用,创建一个进程,% i y9 v# p8 ^ C8 C
#include% W6 q# Z. a# ]" ]
pid_t fork(void);
3 _6 O+ F9 B; O+ c3 X调用成功父进程返回子进程号,子进程返回0,失败返回-1。0 q U( z7 x1 n5 e3 C! E s( u% k2 f
如以下代码:
$ U; V: C, x- f: _- N/ }for.c:& c* j& ], u" t9 A. }1 `/ R
![]()
" w2 U2 R* r5 i6 \! a/ i. f打印结果:# x* b7 y/ }, m' P5 R
' P, p! A: e4 A P" |9 O" R7 i3 U
程序执行过程中第一次调用fork()进程2531创建子进程2532;第二次fork(),进程2531创建子进程2533,进程2532创建2534,创建过程如图 1.3:
9 e1 Q( v5 N, r1 O: G4 p; |, {![]()
5 F7 j! i& E( B7 H0 K ( K. h7 d* D4 m% C$ b
|
|