进程间的信号传值
传值
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
int main(int argc, char const *argv[])
{
if(argc != 2)
{
printf("%s <pid>\n", argv[0]);
return -1;
}
int pid = atoi(argv[1]);
union sigval value;
value.sival_int = 100;
sigqueue(pid,SIGUSR1,value);
return 0;
}
接收
#include <stdio.h>
#include "myhead.h"
void func(int sig)
{
printf("标准响应函数收到信号:%d\n",sig );
}
void act_func(int sig,siginfo_t *siginfo,void *ptr)
{
if(siginfo->si_code == SI_QUEUE)
{
printf("获取到信号【%d】发送过来的数据:%d\n",sig,siginfo->si_int );
}
}
int main(int argc, char const *argv[])
{
printf("进程【%d】开始运行0.。。\n", getpid());
struct sigaction act;
act.sa_handler = func;
act.sa_sigaction = act_func;
sigset_t myset;
sigaddset(&myset,SIGUSR2);
act.sa_mask = myset;
act.sa_flags |= SA_SIGINFO;
sigaction(SIGUSR1,&act,NULL);
pause();
return 0;
}