可以通过kill函数向其他进程发送信号:
#include <sys/types.h>
#include <signal.h>
int kill(pid_t pid, int sig);
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>
#include <signal.h>
static int sig_done = 0;
void handleSig(int sig)
{
printf("recv sig\n");
sig_done = 1;
}
int main()
{
pid_t pid;
pid = fork();
if(pid == 0)
{
printf("in child\n");
sleep(3);
printf("child send sig\n");
kill(getppid(), SIGINT);
exit(0);
}
else
{
printf("in parent\n");
signal(SIGINT, handleSig);
}
int n = 0;
do{
printf("sleep %d\n", ++n);
sleep(1);
}while(sig_done == 0);
printf("sig_done=%d\n", sig_done);
return 0;
}
运行程序输出:
in parent
sleep 1
in child
sleep 2
sleep 3
child send sig
recv sig
sig_done=1可以看到子进程通过kill函数向父进程发送了信号