请教,如何直接在c中判断进程是否还在,如httpd
目前使用的是system("pstree |grep "httpd""),但这样还是与系统依赖性太大,不知有没有别的办法,如读系统相关参数,如/proc,不知大家都是如何实现的??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
目前使用的是system("pstree |grep "httpd""),但这样还是与系统依赖性太大,不知有没有别的办法,如读系统相关参数,如/proc,不知大家都是如何实现的??
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(9)
楼上的正解,这是最传统的方法了,LZ可以参考ps的源码实现!
可以把监视单独做成一个程序啊,通过IPC或者其他方式告诉它要监视的pid
kill -9 $pid_of_httpd
这样了以后你还能凭PID file的存在判定httpd是否在内存中有实例么
朋友,如果是在程序A中调用另一个程序B。B退出后将会是一个defunct 进程,kill(pid,0);还是会返回0的
得到这个进程 ID(pid),然后 kill(pid,0),进程不存在,返回 -1,errno为 ESRCH
httpd只是一个个例,有很多c程序没有pid,所以这样还是不能达到要求,我想从系统进程方面着手,不知pstree是怎么来调用系统相关信息的?
判断httpd.pid的存在更简单。
大家就没有点建设性意建??,类似进程监控程序应该很多吧?求教了
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.