赞
踩
kill() | #include <sys/types.h> #include <signal.h> int kill(pid_t pid, int sig); | 可将信号发送给指定的进程或进程组中的每一个进程 |
|
raise() | #include <signal.h> int raise(int sig); | 向自身发送信号 |
|
alarm() | #include <unistd.h> unsigned int alarm(unsigned int seconds); | 设置定时器,当定时时间到后,内核会向进程发送SIGALRM信号 | 需要注意的是 alarm 闹钟并不能循环触发,只能触发一次,若想要实现循环触发,可以在 SIGALRM 信 号处理函数中再次调用 alarm()函数设置定时器。 |
pause() | #include <unistd.h> int pause(void); | 使得进程暂停运行、进入休眠状态,直到进程捕获到一个信号为止,只有执行了信号处理函数并从其返回时, pause()才返回,在这种情况下, pause()返回-1,并且将 errno 设置为 EINTR |
|
abort() | #include <stdlib.h> void abort(void); | 通常产生SIGABRT信号来终止调用该函数的进程 | SIGABRT 信号的系统默认操作是终止 进程运行、并生成核心转储文件;当调用 abort()函数之后,内核会向进程发送 SIGABRT 信号 |
sigqueue() | #include <signal.h> int sigqueue(pid_t pid, int sig, const union sigval value); | 发送实时信号,信号范围是34-64 | 发送进程使用 sigqueue()系统调用向另一个进程发送实时信号以及伴随数据。 ⚫ 接收实时信号的进程要为该信号建立一个信号处理函数,使用sigaction函数为信号建立处理函数, 并加入 SA_SIGINFO,这样信号处理函数才能够接收到实时信号以及伴随数据,也就是要使用 sa_sigaction 指针指向的处理函数,而不是 sa_handler,当然允许应用程序使用 sa_handler,但这样 就不能获取到实时信号的伴随数据了 |
sigaction() | #include <signal.h> int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); | 设置信号处理方式 允许单独获取信号的处理函数而不是设置,并且还可以设置各种属性对调用信号处理函数时 的行为施以更加精准的控制 |
|
sigprocmask() | #include <signal.h> int sigprocmask(int how, const sigset_t *set, sigset_t *oldset); | 随时显式的向信号掩码中添加/移除信号 |
|
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。