ChinaUnix.net
相关文章推荐:

sigaction用法

sigaction是不是一次只能安装一个信号, 如果想一次安装多个信号, 得多调用几次sigaction。。。 谢谢.......

by ruchong - C/C++ - 2009-08-15 00:31:13 阅读(1172) 回复(1)

相关讨论

int sigaction(int signo,const struct sigaction *restrict act,struct sigaction restrict oact); signo:要检测信号编号 act非空,则要修改其动作,oact非空,则系统由oact指针返回该信号的上一个动作。 oact非空,则系统由oact指针返回该信号的上一个动作。这句话如何理解啊???

by zhongf1114 - C/C++ - 2006-09-28 15:58:59 阅读(1105) 回复(1)

:em02: sigaction函数用于查询和设置信号操作,句法如下: struct sigaction { void (*sa_handler)(); sigset_t sa_mask; int sa_flags; }; int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); 我困惑的是,为什么开始是个结构体,后来又成了一个函数了?哪位大侠点拨一下,谢谢。

by yanghehe - C/C++ - 2004-03-22 16:43:51 阅读(915) 回复(1)

sigemptyset(&act.sa_mask) 书上的解释是Posix 允许我们指定这样一组信号,他们在信号处理程序被调用是阻塞.任何阻塞的信号都不能提交给进程.我们设置成员sa_mask为空集,这意味着当信号处理程序运行是没有别的信号阻塞.posix保证信号处理程序正在运行是被捕获的信号是阻塞的啊. 没看明白,谁能具个例子.谢谢,这样有什么好处吗. act.sa_flags = 0 设置成0是什么意思啊.

by ruchong - C/C++ - 2007-10-07 13:05:23 阅读(2401) 回复(5)

最近再看信号处理这块,遇到了些麻烦。先上我的测试代码吧,代码功能很简单,就是测试sigaction的阻塞,预期的结果是当按下ctrl+c发出SIGINT信号时,打印“SIGINT receive signal ”,紧接着按下ctrl+\发出SIGQUIT信号(两次按键小于3秒,也就是说进程正在处理SIGINT信号,即inter函数中),SIGQUIT信号会被阻塞,打印“SIGQUIT is blocked”,最后才打印“SIGQUIT receive signal ”。 #include #include ...

by pflifeshow - C/C++ - 2009-03-12 20:05:49 阅读(1816) 回复(4)

int main(int argc,int argv[]) { struct sigaction newhandler; sigset_t blocked; void inthandler(int); newhandler.sa_handler=inthandler; newhandler.sa_flags=SA_RESETHAND; sigemptyset(&blocked); sigaddset(&blocked,SIGQUIT); newhandler.sa_mask=blocked; if (sigaction(SIGINT,&newhandler,NULL)==-1) perror("sigaction"); else while(1) { ...

by waternie - C/C++ - 2008-09-04 11:56:04 阅读(1606) 回复(4)

是不是sigaction安全些, 咱得尽量用sigaction

by 204tian - C/C++ - 2012-08-14 14:16:18 阅读(14653) 回复(13)

[code]#include #include #include #define TIMEOUT 5 #define MAXTRIES 5 #define LINESIZE 100 #define BELL '\007' #define TRUE 1 #define FALSE 0 /* 判断超时是否已经发生的标志 */ static int time_out; static char inputline[LINESIZE]; char* quickreply (char* prompt); void catch(int); main() { printf("%s\n",quickreply("Input")); } char* quickreply (char* prompt) { int...

by Ray001 - C/C++ - 2006-12-31 09:58:59 阅读(2482) 回复(0)

struct sigaction的结构如下: [code]struct sigaction { void (*sa_handler)(int); void (*sa_sigaction)(int, siginfo_t *, void *); sigset_t sa_mask; int sa_flags; void (*sa_restorer)(void); } [/code] 疑惑如下: sa_mask 是局部有效的吗? 也就是处理SIGINT的时候 如果我设置了 对SIGALRM的屏蔽. 不调用sigpr...

by mq110 - C/C++ - 2011-07-12 18:11:05 阅读(6560) 回复(12)

我的主进程等待子进程退出的SIGCHLD,希望能拿到子进程的pid,好像signal不行。。。是不是要用sigaction?请问怎么拿才保险?(可能同时有很多子进程退出消息)

by bbllyy - C/C++ - 2004-09-17 17:24:06 阅读(775) 回复(1)

sa_flags |= SA_RESTART; 这样写对信号处理以后进程调用(如select ,read ,recv等)会有什么样的结果? xiexie

by sanpan - C/C++ - 2003-11-06 16:24:32 阅读(3023) 回复(2)