sleep
在捕捉到信号,且信号处理函数返回所,会被终止挂起(sleep之前屏蔽的信号除了 SIGMALRM 都屏蔽,不能使挂起终止)!
时间到返回0, 收到信号处理完信号结束,返回剩余秒数!
对于alarm,看具体实现,若sleep以alarm实现,则可能会更新sleep之前设定的alarm值!(alarm(10);sleep(5);)
nano sleep实现纳秒级别的休眠
<time.h>
nanosleep(const strcut timespec *sval, const struct timespec *nanosval);//出错返回-1 与sleep不同,sleep异常终止返回未休眠完的秒数
//未休眠完的 从参数返回
clock_nanosleep 按指定的始终,按相对或者绝对的时间休眠
int clock_nanosleep(clockid_t clockid, int flag,const strcut timespec *sval, const struct timespec *nanosval );
flag为0相对,CLOCK_ABSTIME绝对
#include <signal.h>
int sigqueue(const int signo, const union sigval value);
sigqueue 可向单个进程发送信号,可附带传递整数或者指针,信号会被排队
信号只能想单个进程传递
信号排队数量 <= SIGQUEUE_MAX
要处理信号传递的额外信息,需使用sigaction.sa_action 设置处理函数,sigaction.sa_flag = SIGINFO
当然可以不设置用sigaction.sa_action,取信号,但是不能获取到额外信息
打印信号,信号名
系统一般提供数组,保存信号对于信号名,下标为信号值
extern char *sys_siglist[];
#include <signal.h>
void psignal(const int signo, const char *msg)//mag是你要添加的字符串:,会加上:,显示为“你的msg:信号信息”
#include <signal.h>
void psifinfo(const struct siginfo_t *info, const char *msg); //当使用sigaction 的siginfo时可使用
#include <stirng.h>
char *strsignal(int signo);//信号转换程信号名字符串