linux环境 调用system()创建的进程检测父进程是否退出
时间: 2023-11-09 22:06:42 浏览: 132
Linux启动新进程的三种方法
在Linux环境下,可以通过获取父进程ID(PPID)来检测父进程是否退出。可以使用getppid()函数来获取当前进程的父进程ID,然后使用kill()函数向父进程发送信号,如果返回值为0,则表示父进程还在运行中;否则,表示父进程已经退出。
以下是一个示例代码:
```c++
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
pid_t pid = fork();
if (pid == 0) {
// 子进程
sleep(10);
} else if (pid > 0) {
// 父进程
int status;
sleep(1);
if (getppid() == 1) {
printf("Parent process exited\n");
exit(0);
}
kill(getppid(), 0);
if (errno == ESRCH) {
printf("Parent process exited\n");
exit(0);
}
} else {
printf("Fork failed\n");
exit(1);
}
return 0;
}
```
在上面的示例中,父进程首先调用getppid()函数获取其父进程ID,然后使用kill()函数向父进程发送信号0,来检测父进程是否存在。如果父进程不存在,则打印一条消息并退出程序。子进程则会休眠10秒钟,以便我们可以测试父进程的退出情况。
阅读全文