当前位置: 技术问答>linux和unix
請教sigaction函數的用法
来源: 互联网 发布时间:2016-10-25
本文导语: 請教該函數的用法,該函數中有一個同名結構體sigaction,定義如下: struct sigaction { void (*sa_handler)(int); void (*sa_sigaction)(int, siginfo_t *, void ...
請教該函數的用法,該函數中有一個同名結構體sigaction,定義如下:
一般情況下,我們只需要設置sa_handler就可以了,但manual里提到將sa_flags設為SA_SIGINFO時,將使用sa_sigaction指向的處理函數,那麼我想知道的是:此時代碼該如何寫呢?siginfo_t*,以及void*是在哪裡指定的呢?
是不是和int代表的信號值一樣是系統自動設定的?只需要我們拿來用就可以了?
struct sigaction {
void (*sa_handler)(int);
void (*sa_sigaction)(int, siginfo_t *, void *);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer)(void);
};
一般情況下,我們只需要設置sa_handler就可以了,但manual里提到將sa_flags設為SA_SIGINFO時,將使用sa_sigaction指向的處理函數,那麼我想知道的是:此時代碼該如何寫呢?siginfo_t*,以及void*是在哪裡指定的呢?
是不是和int代表的信號值一樣是系統自動設定的?只需要我們拿來用就可以了?
void inthandler(int signum,siginfo_t *sigt,void *ptr)
{
....
}
|
指定SA_SIGINFO时,一般用int sigqueue(pid_t pid, int signo, const union sigval value);发信号,
收到信号时信号处理函数的参数里的siginfo_t的union sigval si_value 成员,就是sigqueue指定的值,当然还可以得到其他的信息,比如发送这个信号的进程号和用户
pid_t si_pid Sending process ID.
uid_t si_uid Real user ID of sending process.
收到信号时信号处理函数的参数里的siginfo_t的union sigval si_value 成员,就是sigqueue指定的值,当然还可以得到其他的信息,比如发送这个信号的进程号和用户
pid_t si_pid Sending process ID.
uid_t si_uid Real user ID of sending process.
|
IBM developerWorks 牛
平时真是只是用sa_handler,指定一个处理动作而已
信号是一种异步机制,处理不好可能引发意想不到的问题,难以定位
能少用就少用了
进程间通信的话,考虑其它通信机制了
平时真是只是用sa_handler,指定一个处理动作而已
信号是一种异步机制,处理不好可能引发意想不到的问题,难以定位
能少用就少用了
进程间通信的话,考虑其它通信机制了
|
这个信号 你可以用 kill -l来查看!
那些信号有自己设定的值 你可以自己进行判定!
那些信号有自己设定的值 你可以自己进行判定!
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。