微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

确定一个过程的状态

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

我最初的想法是用命令ps 12345调用execv() ,其中12345是进程ID,然后parsing输出以获得STAT。 但是,我不认为我可以将它输出到我的程序中,因为它只是自动输出(或者我可以吗?)。

我也在想,我可以给这个过程发送一个信号,但我还没有find一个好的方法来做到这一点,我甚至不知道是否可以用这种方式来确定过程状态。

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

我的fortran代码输出被杀死了,有什么build议吗?

C中的事件驱动模型

如何获得在Linux上C的cpu信息,如核心数量

你可以使用Div by Zero来检测附加到你的进程的debugging器吗?

添加一个“非常有用”的系统调用通常不可用于非root用户

如何读取C ++中的sy@R_502_6063@()调用的结果?

vxworks中的任务

访问硬盘的未分配空间

内核模块函数未定义

我怎样才能共享两个程序之间的图书馆c

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

例如:

[cnicutar@fresh self]$ cat /proc/3529/stat 3529 (bash) S 3528 3529 ...... ^

另外,还有一个/proc/[pid]/status文件

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

我只会在stat上使用fscanf 。

如果你想分析一个命令的输出,使用popen 。

我想有一个更简单的方法来做到这一点,必须有一个C API来访问过程信息…(注意:也有/proc/12345/status )

看看这个: http : //sourceforge.net/p/readproc/code/ci/master/tree/

你可以使用struct Job.status来struct Job.status这一点。

#include"read_proc.h" int main(void) { struct Root * root=read_proc(); printf("state: %cn",root->first->status); return 0; }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐