qiongshizu 2015-03-30 03:45 采纳率: 33.3%
浏览 684

急求大神解决一下这个问题c信号传递

#include
#include
#include

int main(int argc, char ** argv)
{
union sigval value;
int signum = SIGTERM; // 默认发送SIGTERM
pid_t pid;
int i;

/*初始化*/
value.sival_int = 0;

/*检查参数的个数*/
if (argc != 3 && argc != 5 && argc != 7) {
printf("./send_data_signo <-d data> <-s signum> [-p][data]\n");
exit(1);
}

/*从命令行参数解析出信号编号、PID以及待传递的数据*/
for (i=1; i<argc; i++) {
if (!strcmp(argv[i], "-d")) {
value.sival_int = argv[i+1]; //指针指向参数中的字符串
continue;
}
if (!strcmp(argv[i], "-s")) {
signum = atoi(argv[i+1]);
continue;
}
if (!strcmp(argv[i], "-p")) {
pid = atoi(argv[i+1]);
continue;
}
}

/*利用sigqueue给pid发送信号signum,并携带数据value*/
if (sigqueue(pid, signum, value) < 0) {
perror("sigqueue");
exit(1);
}

return 0;
}

#include
#include

/*三参数的信号处理程序*/
void handler_sigint(int signo, siginfo_t *siginfo, void * pvoid)
{
printf("recv SIGINT, the data value is:%s\n",(char *) siginfo->si_ptr);
}

int main()
{
struct sigaction act;

/*赋值act结构*/
act.sa_sigaction = handler_sigint;
act.sa_flags = SA_SIGINFO; // 指定使用三参数的信号处理函数
/*安装信号处理函数*/
sigaction(SIGINT, &act, NULL);

while(1)
;

return 0;
}

然后运行之后,如果-s后面的参数为1的话好像有问题,这个是什么情况,求个大神解决一下。
![图片说明](https://img-ask.csdn.net/upload/201503/30/1427687096_744161.png)图片说明

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 微信会员卡接入微信支付商户号收款
    • ¥15 如何获取烟草零售终端数据
    • ¥15 数学建模招标中位数问题
    • ¥15 phython路径名过长报错 不知道什么问题
    • ¥15 深度学习中模型转换该怎么实现
    • ¥15 HLs设计手写数字识别程序编译通不过
    • ¥15 Stata外部命令安装问题求帮助!
    • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
    • ¥15 TYPCE母转母,插入认方向
    • ¥15 如何用python向钉钉机器人发送可以放大的图片?