回答
當然,使用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. 如何找到一個特定的進程仍在PHP中運行
- 2. 如何在後臺運行進程? c#
- 3. 如何在C#中找到運行應用程序的屏幕?
- 4. 如何在另一個進程中運行一些Python代碼?
- 5. 如何在C中同時運行兩個子進程?
- 6. 如何在mac上找到正在運行的java進程的進程ID?
- 7. 如何找到正在運行的進程的內存泄漏?
- 8. 如何找到正在運行的進程
- 9. 如何找到一個C++可執行
- 10. 如何在VB.NET中查找正在運行的進程
- 11. 如何找到Windows中正在啓動的另一個進程
- 12. 如何運行在一個ASP.NET應用程序一個C#主
- 13. 如何運行一個子進程,並用C中的父進程對其進行操作?
- 14. 如何強制兩個進程在同一個CPU上運行?
- 15. 在Docker中運行三個進程,找不到未找到的最後一個.py文件
- 16. 如何在C中運行一個程序x分鐘?
- 17. 運行在.NET和C++中的進程
- 18. 在C中運行/暫停子進程?
- 19. 如何在.net中使用c在後臺運行進程#
- 20. 如何查找第一個cron作業進程完成或仍在運行?
- 21. 如何在Python中找到unix進程
- 22. 如何一個接一個地運行後臺進程
- 23. Boost.Process - 如何讓一個進程運行一個函數?
- 24. 如何結束在另一個倉庫中運行的另一個git進程?
- 25. 在一個進程中運行多個程序?
- 26. 如何與正在運行的Python進程從一個Objective-C的應用程序進行通信?
- 27. 如何確保只有單個進程在線程中運行
- 28. 如何在C#項目中運行nircmd.exe進程,Windows 10?
- 29. 如何檢查進程是否仍在c內核中運行?
- 30. 如何在winforms 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