linux如何用C语言实现父进程向子进程发送kill结束子进程
时间: 2023-12-10 11:37:38 浏览: 197
可以使用Linux系统提供的kill()函数来实现父进程向子进程发送kill信号。该函数的原型如下:
```
#include <sys/types.h>
#include <signal.h>
int kill(pid_t pid, int sig);
```
其中,pid参数为要发送信号的进程ID,sig参数为要发送的信号类型。
在父进程中,可以先使用fork()函数创建子进程,然后使用kill()函数向子进程发送信号。示例代码如下:
```c
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
int main() {
pid_t pid;
int status;
pid = fork();
if (pid < 0) {
printf("Error: fork() failed\n");
return 1;
} else if (pid == 0) {
// 子进程执行的代码
printf("Child process is running\n");
sleep(10);
printf("Child process is exiting\n");
} else {
// 父进程执行的代码
printf("Parent process is running, child pid = %d\n", pid);
sleep(5);
printf("Parent process is sending SIGKILL to child process\n");
kill(pid, SIGKILL);
wait(&status);
printf("Child process exited with status: %d\n", status);
}
return 0;
}
```
在上面的示例代码中,父进程首先使用fork()函数创建子进程,然后在子进程中打印一些信息并休眠10秒钟,最后退出。在父进程中,打印一些信息后休眠5秒钟,然后使用kill()函数向子进程发送SIGKILL信号,强制结束子进程。父进程使用wait()函数等待子进程退出,并打印子进程的退出状态。
执行上面的代码,将会输出如下结果:
```
Parent process is running, child pid = 1234
Child process is running
Parent process is sending SIGKILL to child process
Child process exited with status: 9
```
可以看到,父进程成功地向子进程发送了SIGKILL信号,强制结束了子进程。
阅读全文