初学,请教一个信号问题,这个方法不理解

kuangren 2004-04-28 11:29:21
程序如下:
#include <signal.h>
static void sig_usr(int)
int main(void)
{
if(signal(SIGUSR1,sig_usr)==SIG_ERR)//这里的sig_usr不是静态方法吗,如何理解?
{
printf("can't catch SIGUSR1\n");
}

for(;;)
pause();

}


static void sig_usr(int signumber)
{
if(signumber==SIGUSR1)
printf("received SIGUSR!\n");
return;
}

//不是很理解sig_usr这里为何这样调用,为何不是sig_usr(int)??
这个简单问题,希望大家解析下,我不是很懂,谢谢了
...全文
38 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuangren 2004-04-28
  • 打赏
  • 举报
回复
哦,找到相关资料了,
谢谢
gaoxianfeng 2004-04-28
  • 打赏
  • 举报
回复
sig_usr
编译完后 它其实是个相对地址 也就是函数指针
你告诉系统 怎么调用是系统的事情了
最后的形势
还是static void sig_usr(int)
但好像

typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler);
rexp 2004-04-28
  • 打赏
  • 举报
回复
signal中,第二个参数是函数指针,函数调用后面要()
anonimousboy 2004-04-28
  • 打赏
  • 举报
回复
楼上说的对,signal的第二个参数是一个指向函数的指针,这个函数可以由我们自己来定义,在指向你的函数的时候,会把第一个参数传给你的函数!
fierygnu 2004-04-28
  • 打赏
  • 举报
回复
函数指针理解吗?signal(SIGUSR1,sig_usr)是给SIGUSR1信号注册了一个信号处理函数,即sig_usr。如果不了解函数指针,找本C语言基础书看看,比如TCPL。

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧