我正在尝试使用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) –