您的位置:首页 > 其它

10_18 用sigaction实现signal函数

2015-12-10 09:31 363 查看
除非设置了SA_RESTART标志,否则sigaction函数不再重启动被中断的系统调用。

一、源代码:

vim 10_18.c

#include "apue.h"

Sigfunc * singnal(int signo,Sigfunc *func)

{

        struct sigaction act,oact;

        act.sa_handler = func;

        sigemptyset(&act.sa_mask);

        act.sa_flags = 0;

        if (signo == SIGALRM)

#ifdef SA_INTERRUPT

                act.sa_flags |= SA_INTERRUPT;

#endif

        else

                act.sa_flags |= SA_RESTART;

        if (sigaction(signo,&act,&oact) < 0)

                return (SIG_ERR);

        return (oact.sa_handler);

}

~

~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: