确定进程的状态

dub*_*yaa 2 c linux operating-system process

我试图在Linux环境中找出使用C(运行,休眠或退出)的进程状态.

我最初如何执行此操作的想法是execv()使用命令调用ps 1234512345将是进程ID,然后解析其输出以获取STAT.但是,我不认为我可以将其输出到我的程序中,因为它只是自动输出(或者我可以?).

我也在想我可以向进程发送一个信号,但是我没有找到一个很好的方法来做到这一点,我甚至不知道是否有可能以这种方式确定进程状态.

所以,我的问题是,如何确定C中进程的状态?

cni*_*tar 8

在linux中有一个名为空格分隔值的文件/proc/[pid]/stat.第三个值是过程状态.

例如:

[cnicutar@fresh self]$ cat /proc/3529/stat
3529 (bash) S 3528 3529 ......
            ^
Run Code Online (Sandbox Code Playgroud)

或者,还有一个/proc/[pid]/status文件:

[cnicutar@fresh self]$ cat /proc/3529/status
Name:   bash
State:  S (sleeping)
....................
Run Code Online (Sandbox Code Playgroud)

我只想用fscanfstat.