有人可以告诉我如何检查具有给定进程ID的unix进程是否正在C程序中运行。我知道我可以调用system()并使用ps命令,但我不想调用system()。检查C中的运行进程
回答
使用kill(2):
if (kill(pid, 0) == 0) {
/* process is running or a zombie */
} else if (errno == ESRCH) {
/* no such process with the given pid is running */
} else {
/* some other error... use perror("...") or strerror(errno) to report */
}
简单。优雅。无遗。 +1。 – DevSolar 2011-03-28 15:06:19
谢谢Juliano。感谢您的快速和优秀的回复。 – 2011-03-28 15:10:56
除非进程是调用进程的子进程,否则也是无用的。只要完成的进程由其父进程“等待”,PID就可以重新使用,因此如果一个给定PID的进程存在,那么就不能保证它是你认为它的进程,除非你是父进程那么你已经知道它的pid是否由'wait'-family函数返回)。 – 2011-03-28 15:35:01
- 1. 检查正在运行的进程 - java
- 2. 如何检查进程是否仍在c内核中运行?
- 3. 运行子进程时检查条件
- 4. 检查进程是否正在运行
- 5. 检查进程是否正在运行
- 6. bash脚本来检查运行进程
- 7. 检查某个特定进程是否在运行C++的windows上运行
- 8. 如何检查进程是否从C++代码运行?
- 9. C#:检查进程是否正在运行问题
- 10. 如何使用C++检查进程是否在运行
- 11. C++如何检查Outlook进程是否已在运行
- 12. C++检查特定进程是否正在运行
- 13. 检查C#中的运行安装#
- 14. 检查进程是否正在运行(使用进程名称)
- 15. 编程检查某个进程在后台中运行
- 16. 如何检查NSIS中特定端口上运行的进程
- 17. 检查Windows服务器中运行的PHP进程
- 18. 运行在.NET和C++中的进程
- 19. 如何检查进程在python中运行(在linux中)?
- 20. 检查远程进程在运行(Linux)的
- 21. 进程仍在运行C++
- 22. 从Mono上运行的C#进程运行C++应用程序。运行检测器错误
- 23. 检查进程是否在HP NonStop OSS Tandem中运行
- 24. 如何检查Linux中是否正在运行进程?
- 25. 检查两个进程是否未在shell脚本中运行
- 26. 检查一个进程是否在Unix中运行
- 27. 如何检查Unix进程是否在Perl中运行?
- 28. 在Windows7中运行管理进程(C#)
- 29. 在C中运行/暂停子进程?
- 30. 如何检查正在运行的java程序的进度
可能重复:http://stackoverflow.com/questions/3667486/display-all-process-using-a-posix-function – 2011-03-28 14:53:14
不是重复。这个问题是关于检查*特定的*进程ID,另一个问题是关于列出*所有*进程。 (Juliano的优秀答案不适用于其他问题。) – DevSolar 2011-03-28 15:05:40
@EdwinBuck请考虑取消删除您的正确的,即使不是完全可移植的答案(在/ proc可用的系统上,它将提供访问可帮助消除歧义的信息,别人'ps'必须从某处获得它的信息) – 2013-06-21 12:36:15