日期:2014-05-16  浏览次数:20671 次

sigqueue发送附加信息无效
if ( fork() == 0 )
{
union sigval sval;
char *data = new char[10];
memset(data,0,sizeof(data));
for(int i=0;i < 5;i++)
data[i]='2';
//sval.sival_int = 5;
sval.sival_ptr = data;
sigqueue(getppid(), 35, sval);
}

向父进程发送信号,父进程确实收到了信号,但是打印出来的siginfo_t.si_ptr确是空的,如果使用sival_int的话确又能正常显示,为什么会这样呢?sa_flags已经设置为SA_SIGINFO.

------解决方案--------------------
探讨

只能发送字符串字面量,其他都不可以引用:

C/C++ code
[liangdong@bb-browser-test00.vm.baidu.com c_project]$ ./main
hello world
[liangdong@bb-browser-test00.vm.baidu.com c_project]$ cat main.c
#include <std……