回答
當然,使用kill(2)
:
#include <sys/types.h>
#include <signal.h>
int kill(pid_t pid, int sig);
如果SIG爲0,則沒有信號發送,但是仍然執行錯誤檢查;這可以用來檢查是否存在進程ID或進程組ID。
所以才呼籲要檢查,看看你得到一個錯誤(ESRCH
)進程的進程ID kill(pid, 0)
。
這是檢查您是否擁有進程ID的好方法,但他只有進程名稱。 – cegfault 2012-08-02 21:24:21
@cegfault:的確如此。儘管名稱並沒有真正告訴你「進程」,因爲可能有許多進程具有相同的名稱。我認爲OP的問題缺乏幾個重要的細節。 – 2012-08-02 21:35:01
沒有「進程名稱」:'execve(argv [0],NULL,NULL);' – wildplasser 2012-08-02 21:38:54
您可以掃描所有當前正在運行的進程的/proc
文件系統,然後查看該cmdline
條目是否與該特定進程需要的內容匹配。
但是,有一個競爭條件。這個過程可能會在您決定運行後死亡。
確定您的流程是否仍在運行的火災方法就是啓動流程。然後,當一個孩子死亡,你會得到SIGCHLD
,你可以使用waitpid(-1,..)
找出哪個孩子死亡。
在Linux上,另一種方法可能包括檢查/proc
目錄的內容。編號目錄是進程ID,而包含cmdline
文件的子目錄顯示命令的名稱。
例如,如果/proc/1234/cmdline
包含值foo
,然後處理foo
有1234的ID你可以這樣映射名稱的PID,使用C.標準檔案存取功能的詳細信息,請參閱proc(5)
。
您可能會發現這個有趣的:http://programming-in-linux.blogspot.com/2008/03/get-process-id-by-name-in-c.html
的「傳統和最好的方式」做,這是閱讀/proc
文件夾。你可以看到更多this question,其中http://procps.sourceforge.net/,這可能是你感興趣的
- 1. 如何找到一個正在運行的進程
- 2. 如何找到一個特定的進程仍在PHP中運行
- 3. 找到一個正在運行的進程
- 4. 如何在後臺運行進程? c#
- 5. 如何在C#中找到運行應用程序的屏幕?
- 6. 如果一個進程正在運行
- 7. 如何在另一個進程中運行一些Python代碼?
- 8. 如何在C中同時運行兩個子進程?
- 9. 如何在mac上找到正在運行的java進程的進程ID?
- 10. 如何找到正在運行的進程的內存泄漏?
- 11. 如何找到正在運行的進程
- 12. 如何找到一個C++可執行
- 13. 進程仍在運行C++
- 14. 在C#中運行一個進程至少5秒WPF
- 15. 如何在Python中一次運行2個不同的進程
- 16. 如何在新進程中運行一個函數?
- 17. 我如何找到一個父進程的所有子進程(C語言)
- 18. 如何知道一個進程是否在C++,WinAPI的Windows中運行?
- 19. 如何在VB.NET中查找正在運行的進程
- 20. 如何確定一個進程是由進程名運行
- 21. 如何運行在一個ASP.NET應用程序一個C#主
- 22. 如何找到Windows中正在啓動的另一個進程
- 23. 如何在運行另一個進程後激活我的應用程序 - C#
- 24. 如何運行一個子進程,並用C中的父進程對其進行操作?
- 25. 如何強制兩個進程在同一個CPU上運行?
- 26. 在OS X中運行進程,查找啓動程序進程
- 27. 在Docker中運行三個進程,找不到未找到的最後一個.py文件
- 28. 如何在C中運行一個程序x分鐘?
- 29. 如何檢查一個線程是否在C#中運行?
- 30. 如何在openvms中運行一個簡單的c程序?
我認爲你需要更具體的關於你到底想做什麼。你知道有問題的進程的PID或名稱嗎? – 2012-08-02 21:19:15
我知道進程名稱,是的。 – Kitcha 2012-08-02 21:21:51
你可能想看看這個相關的問題:http://stackoverflow.com/questions/3667486/display-all-process-using-a-posix-function – rayd09 2012-08-02 21:23:27