当前位置: 技术问答>linux和unix
在程序中如何得到一个进程的状态?(不用ps命令),如何检查一个进程处于D状态(uninterruptible sleep)
来源: 互联网 发布时间:2015-12-10
本文导语: 在程序中如何得到一个进程的状态?(不用ps命令),如何检查一个进程处于D状态(uninterruptible sleep) | 读/proc文件.没个进程都有一个进程号,这在/proc目录里对应一个以进程号命名的目录.该目录里...
在程序中如何得到一个进程的状态?(不用ps命令),如何检查一个进程处于D状态(uninterruptible sleep)
|
读/proc文件.没个进程都有一个进程号,这在/proc目录里对应一个以进程号命名的目录.该目录里包含了此进程的所有信息.如果查看进程的状态可以查看/proc/PID/status文件. 可以在程序里读此文件.
比如:
[zhanghua@localhost zhanghua]$ cat /proc/9295/status
Name: sshd
State: S (sleeping) ----------------------> 进程的状态.
Tgid: 9295
Pid: 9295
PPid: 1756
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 32
Groups:
VmSize: 6756 kB
VmLck: 0 kB
VmRSS: 452 kB
VmData: 380 kB
VmStk: 28 kB
VmExe: 268 kB
VmLib: 3304 kB
SigPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 8000000000001000
SigCgt: 0000000000002000
CapInh: 0000000000000000
CapPrm: 00000000fffffeff
CapEff: 00000000fffffeff
比如:
[zhanghua@localhost zhanghua]$ cat /proc/9295/status
Name: sshd
State: S (sleeping) ----------------------> 进程的状态.
Tgid: 9295
Pid: 9295
PPid: 1756
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 32
Groups:
VmSize: 6756 kB
VmLck: 0 kB
VmRSS: 452 kB
VmData: 380 kB
VmStk: 28 kB
VmExe: 268 kB
VmLib: 3304 kB
SigPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 8000000000001000
SigCgt: 0000000000002000
CapInh: 0000000000000000
CapPrm: 00000000fffffeff
CapEff: 00000000fffffeff