我正在嘗試使用NETLINK和CN_IDX_PROC來監視我的進程。這可行,但需要使用root權限啓動監視進程。我試圖通過在我的監視可執行文件(包括CAP_AUDIT_READ,CAP_SYS_ADMIN,CAP_SYS_PTRACE和CAP_IPC_OWNER)上設置文件系統的功能來修復它,但它不起作用,bind()仍然失敗,說「操作不允許「除非使用sudo
開始。獲取有關進程終止的通知
有沒有辦法讓非根用我想要的方式使用netlink連接器套接字?
如果否,是否有其他可靠的方式來獲得通知時,其他(非子,在不同的用戶帳戶下運行)進程終止?我不想調查:它是嵌入式軟件,我沒有太多資源,我希望儘快得到通知。如果目標進程異常終止,我特別希望得到通知,例如由於分段錯誤,所以我不能依賴目標進程的合作。
在Windows上,我只是創建了&在目標進程中鎖定一個已命名的互斥鎖,並使監視進程進入休眠狀態,只要所有者進程死亡,互斥鎖就會保證被釋放。 Linux中是否有類似的IPC機制?
你不能使用[waitpid(2)](http://man7.org/linux/man-pages/man2/waitpid.2.html)或類似的東西嗎? –
@BasileStarynkevitch不能。所有這些系統調用都用於等待狀態更改'在調用進程的子進程中' – Soonts
您可以將進程封裝在另一個進程中(只是'fork'-s和'waitpid'-s) –