当前位置: 技术问答>linux和unix
C/C++语言问题:(void) signal(SIGPIPE, pstat); 是什么意思?
来源: 互联网 发布时间:2015-10-21
本文导语: Solaris下的某段程序: SIG_PF pstat; pstat = signal(SIGPIPE, SIG_IGN); (void) signal(SIGPIPE, pstat); 请问第三行signal前的(void)是什么意思?(与signal相隔一个空格,不知是否有意义)? 我看到有很多unix app的代码中都有这种写法(不...
Solaris下的某段程序:
SIG_PF pstat;
pstat = signal(SIGPIPE, SIG_IGN);
(void) signal(SIGPIPE, pstat);
请问第三行signal前的(void)是什么意思?(与signal相隔一个空格,不知是否有意义)?
我看到有很多unix app的代码中都有这种写法(不一定是signal,但括号里一般是void)
谢谢!
SIG_PF pstat;
pstat = signal(SIGPIPE, SIG_IGN);
(void) signal(SIGPIPE, pstat);
请问第三行signal前的(void)是什么意思?(与signal相隔一个空格,不知是否有意义)?
我看到有很多unix app的代码中都有这种写法(不一定是signal,但括号里一般是void)
谢谢!
|
这叫进程接收到SIGPIPE时调用 pstat(int signaler)函数
前面加(void)是安全考虑,因为signal函数返回的是 sighandler_t
可能老一点的编译器在调用函数与现场恢复时采用的机制所要考虑强制转换返回值为void吧
前面加(void)是安全考虑,因为signal函数返回的是 sighandler_t
可能老一点的编译器在调用函数与现场恢复时采用的机制所要考虑强制转换返回值为void吧
|
没见过,可能是说不需要返回值吧,跟signal(SIGPIPE, pstat);一样。
|
函数返回的应该是个
void (*)(int)
函数指针
这个未理解
学习
void (*)(int)
函数指针
这个未理解
学习
|
void (* sighandler_t)(int)
|
但是这里是函数调用,不是声明啊。
关注。
关注。
|
应该是强制类型转换