一、关于进程等待
相关博客:
http://blog.csdn.net/rengui1228/article/details/73064852
二、基础知识
1,进程的各种状态
Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。 在下文将对进程的R、S、D、T、Z、X 六种状态做个说明。
PROCESS STATE CODES
Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process.
D Uninterruptible sleep (usually IO)
R Running or runnable (on run queue)
S Interruptible sleep (waiting for an event to complete)
T Stopped, either by a job control signal or because it is being traced.
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z Defunct ("zombie") process, terminated but not
reaped by its parent.
For BSD formats and when the stat keyword is used,additional characters may be displayed:
< high-priority (not nice to other users)
N low-priority (nice to other users)
L has pages locked into memory (for real-time and custom IO)
s is a session leader
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ is in the foreground process group
R (task_running) : 可执行状态
S (task_interruptible): 可中断的睡眠状态
D (task_uninterruptible): 不可中断的睡眠状态
T(task_stopped or task_traced):暂停状态或跟踪状态
Z (task_dead - exit_zombie):退出状态,进程成为僵尸进程
X (task_dead - exit_dead):退出状态,进程即将被销毁
2.子进程的异步等待方式
代码实现:
运行结果: