请教,如何直接在c中判断进程是否还在,如httpd

发布于 2022-07-23 09:14:44 字数 110 浏览 10 评论 9

目前使用的是system("pstree |grep "httpd""),但这样还是与系统依赖性太大,不知有没有别的办法,如读系统相关参数,如/proc,不知大家都是如何实现的??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

末蓝 2022-07-27 14:26:59

原帖由 langue 于 2006-9-24 18:52 发表
Bear in mind that /proc file system applies only to Linux.

BSD does have a procfs emulation, but it's not the one of Linux.

楼上的正解,这是最传统的方法了,LZ可以参考ps的源码实现!

等风来 2022-07-27 14:23:49

原帖由 zhongfangqing 于 2006-9-26 15:04 发表

朋友,如果是在程序A中调用另一个程序B。B退出后将会是一个defunct 进程,kill(pid,0);还是会返回0的

可以把监视单独做成一个程序啊,通过IPC或者其他方式告诉它要监视的pid

思念满溢 2022-07-27 13:49:25

原帖由 llzqq 于 2006-9-25 06:43 发表
判断httpd.pid的存在更简单。

kill -9 $pid_of_httpd

这样了以后你还能凭PID file的存在判定httpd是否在内存中有实例么

烂人 2022-07-27 13:44:03

原帖由 lvliangliang 于 2006-9-26 11:23 发表
得到这个进程 ID(pid),然后 kill(pid,0),进程不存在,返回 -1,errno为 ESRCH

朋友,如果是在程序A中调用另一个程序B。B退出后将会是一个defunct 进程,kill(pid,0);还是会返回0的

毁梦 2022-07-27 13:19:35

得到这个进程 ID(pid),然后 kill(pid,0),进程不存在,返回 -1,errno为 ESRCH

空心空情空意 2022-07-27 11:31:35

httpd只是一个个例,有很多c程序没有pid,所以这样还是不能达到要求,我想从系统进程方面着手,不知pstree是怎么来调用系统相关信息的?

一抹微笑 2022-07-26 22:42:16

判断httpd.pid的存在更简单。

梦初启 2022-07-26 22:23:05

大家就没有点建设性意建??,类似进程监控程序应该很多吧?求教了

英雄似剑 2022-07-26 13:08:14

Bear in mind that /proc file system applies only to Linux.

BSD does have a procfs emulation, but it's not the one of Linux.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文