linux环境 使用kill()函数检测另1个进程是否退出实例代码
时间: 2024-02-25 17:55:45 浏览: 69
下面是一个使用kill()函数检测另一个进程是否已退出的示例代码:
```c
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <errno.h>
#include <sys/wait.h>
int main() {
pid_t pid = fork();
if (pid == -1) {
perror("fork");
return 1;
} else if (pid == 0) {
// 子进程
sleep(5);
return 0;
} else {
// 父进程
// 检测子进程是否已退出
int count = 0;
while (count < 10) {
int ret = kill(pid, 0);
if (ret == 0) {
printf("子进程还在运行\n");
} else if (errno == ESRCH) {
printf("子进程已退出\n");
break;
} else {
perror("kill");
return 1;
}
count++;
sleep(1);
}
// 等待子进程退出并释放资源
int status;
ret = waitpid(pid, &status, 0);
if (ret == -1) {
perror("waitpid");
return 1;
}
if (WIFEXITED(status)) {
printf("子进程退出,退出码为:%d\n", WEXITSTATUS(status));
} else {
printf("子进程异常退出\n");
}
return 0;
}
}
```
该示例代码通过fork()函数创建一个子进程,并让子进程休眠5秒后退出。父进程则使用kill()函数检测子进程是否已退出,如果子进程已经退出,则使用waitpid()函数等待子进程退出并释放资源。
阅读全文