gpt4 book ai didi

c++ - 如何使用C++在Linux中检测进程何时终止?

转载 作者:行者123 更新时间:2023-12-01 14:52:24 24 4
gpt4 key购买 nike

目的是我希望在某些随机进程终止时终止在Linux上运行的程序。
我可以获取PID或程序要监视的进程的进程句柄。

我可以采取任何可能的方法吗?

最佳答案

Linux 5.3引入了 pidfd_open ,它使您可以从PID中获取文件描述符。进程终止后,FD将变得可读,您可以使用select/poll/epoll进行检测,如下所示:

#include <iostream>
#include <sys/types.h>
#include <sys/select.h>
#include <sys/syscall.h>
#include <unistd.h>

int main(void) {
pid_t pid;
std::cin >> pid;
int pidfd = syscall(SYS_pidfd_open, pid, 0);
if(pidfd < 0) {
perror("pidfd_open");
return 1;
}
fd_set readfds;
FD_ZERO(&readfds);
FD_SET(pidfd, &readfds);
if(select(pidfd + 1, &readfds, nullptr, nullptr, nullptr) != 1) {
perror("select");
return 1;
}
return 0;
}

关于c++ - 如何使用C++在Linux中检测进程何时终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62355944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com