linux在C语言中如何用kill向子进程发送signal
时间: 2023-12-10 20:38:31 浏览: 93
在Linux中,可以使用kill函数向另一个进程发送信号,其函数原型如下:
```c
#include <signal.h>
int kill(pid_t pid, int sig);
```
其中,pid参数表示要发送信号的进程的ID,sig参数表示要发送的信号类型。
如果要向子进程发送信号,可以在父进程中使用fork函数创建子进程,并在子进程中使用kill函数发送信号。例如:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
void child_handler(int sig) {
printf("Child process received signal %d\n", sig);
}
int main() {
pid_t pid = fork();
if (pid < 0) {
printf("Failed to fork.\n");
return 1;
} else if (pid == 0) {
// Child process
signal(SIGINT, child_handler); // Set signal handler
while (1) {
sleep(1); // Wait for signal
}
} else {
// Parent process
sleep(2); // Wait for child to initialize
kill(pid, SIGINT); // Send signal to child
}
return 0;
}
```
在上面的示例中,父进程使用kill函数向子进程发送SIGINT信号,子进程在接收到信号后会调用child_handler函数进行处理。注意,在子进程中需要使用signal函数设置信号处理函数。
阅读全文