/*
使用sigqueue函数向进程自身发送一个SIGUSR1信号,
并获取该信号的信号值
*/
#include<stdio.h>
#include<signal.h>
#include<stdlib.h>
//SIGUSR1的处理函数
void signalDeal(int signo,siginfo_t *info,void *context)
{
char *pMsg=(char*)info->si_value.sival_ptr;
printf("接收到的信号标号是:%d\n", signo);
printf("接收到信息:%s\n", pMsg);
}
//主函数
int main(int argc,char *argv[])
{
struct sigaction sigAct;
sigAct.sa_flags = SA_SIGINFO;
sigAct.sa_sigaction = signalDeal;
if(sigaction(SIGUSR1,&sigAct,NULL)==-1)
{
printf("sigaction函数调用失败!\n");
exit(1);
}
sigval_t val;
char pMsg[ ]="this is a test!"; //这是一段测试用的字符串
val.sival_ptr = pMsg;
if(sigqueue(getpid(),SIGUSR1,val) == -1)
{
printf("sigqueue函数调用失败!\n");
exit(1);
}
sleep(3); //休眠3秒
return 0;
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。