结构体名可以当函数用?

Veiz 2013-08-18 03:47:10
新手请问各位大虾一个C语言的初级问题。。。
如下: 请问 sigaction(SIGINT, &s, NULL); 是什么意思?
sigaction 不是结构体吗,可以当函数用?


struct sigaction {
unsigned int sa_flags;
__sighandler_t sa_handler;
sigset_t sa_mask; /* mask last for extensibility */
};

static void
handle_signal(int signo)
{
uloop_end();
}

static void
setup_signals(void)
{
struct sigaction s;

memset(&s, 0, sizeof(s));
s.sa_handler = handle_signal;
s.sa_flags = 0;
sigaction(SIGINT, &s, NULL);
sigaction(SIGTERM, &s, NULL);
sigaction(SIGUSR1, &s, NULL);
sigaction(SIGUSR2, &s, NULL);

s.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &s, NULL);
}
...全文
695 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin5161678 2013-08-19
  • 打赏
  • 举报
回复
对C来说 你这里的两个sigaction 名称空间不同 所以没什么问题
赵4老师 2013-08-19
  • 打赏
  • 举报
回复
VS IDE中,在不明白的符号上点鼠标右键,选转到定义。
ForestDB 2013-08-19
  • 打赏
  • 举报
回复
结构体名和函数名相同了而已。
zybjtu 2013-08-18
  • 打赏
  • 举报
回复
引用 楼主 Veiz 的回复:
新手请问各位大虾一个C语言的初级问题。。。 如下: 请问 sigaction(SIGINT, &s, NULL); 是什么意思? sigaction 不是结构体吗,可以当函数用?

struct sigaction {
	unsigned int	sa_flags;
	__sighandler_t	sa_handler;
	sigset_t	sa_mask;	/* mask last for extensibility */
};

static void
handle_signal(int signo)
{
	uloop_end();
}

static void
setup_signals(void)
{
	struct sigaction s;

	memset(&s, 0, sizeof(s));
	s.sa_handler = handle_signal;
	s.sa_flags = 0;
	sigaction(SIGINT, &s, NULL);
	sigaction(SIGTERM, &s, NULL);
	sigaction(SIGUSR1, &s, NULL);
	sigaction(SIGUSR2, &s, NULL); //这种用法显然是构造函数啊

	s.sa_handler = SIG_IGN;
	sigaction(SIGPIPE, &s, NULL);
}
构造函数的用法
max_min_ 2013-08-18
  • 打赏
  • 举报
回复
没问题的, 是可以同名的! 构造函数不就是同名么,初始化的作用而已! 可以自己写个简单的demo测试下的
lty369963 2013-08-18
  • 打赏
  • 举报
回复
结构体是结构体,函数是函数,两码事
你怎么了熊吉 2013-08-18
  • 打赏
  • 举报
回复
只是刚好同名 结构体和函数可以重名的

33,322

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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