1. signal

sighandler_t signal(int signum, sighandler_t handler);

signum:是一个信号。除了SIGKILL和SIGSTOP外的任何一种信号

handler:

  1. 无返回值的函数地址
  2. SIG_IGN:忽略参数signum所指的信号
  3. SIG_DFL:恢复系统对信号的默认处理

注:当一个信号的信号处理函数执行时,如果进程又接收到了该信号,该信号会自动被储存而不会中断信号处理函数的执行,直到信号处理函数执行完毕再重新调用相应的处理函数。但是如果在信号处理函数执行时进程收到了其它类型的信号,该函数的执行就会被中断

查看64信号:

kill -l

2. kill

int kill(pid_t pid, int sig);
  1. 如果参数pid是正数,那么该调用将信号sig发送到进程号为pid的进程
  2. 如果pid等于0,那么信号sig将发送给当前进程所属进程组里的所有进程
  3. 如果参数pid等于-1,信号sig将发送给除了进程1和自身以外的所有进程
  4. 如果参数pid小于-1,信号sig将发送给属于进程组-pid的所有进程
  5. 如果参数sig为0,将不发送信号

3. pause

int pause(void);

当前的进程暂停(进入睡眠状态),直到被信号(signal)所中断

4. alarm

unsigned int alarm(unsigned int seconds);

说明:后一次设定将取消前一次的设定

注:一个进程只能有一个闹钟时间,如果在调用alarm之前已设置过闹钟时间,则任何以前的闹钟时间都被新值所代替

返回值:返回上一个闹钟时间的剩余时间,否则返回0

信号:SIGALRM

5. setitimer

要求不太精确的话,使用alarm()和signal()就行了,但是如果想要实现精度较高的定时功能的话,就要使用setitimer函数

int getitimer(int which, struct itimerval *curr_value);
int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value);
struct itimerval
{
struct timeval it_interval; //下一次的取值
struct timeval it_value; //本次的设定值
}; struct timeval
{
long tv_sec; //秒
long tv_usec; //微秒,1秒 = 1000000 微秒
};

which:

  1. ITIMER_REAL: 以系统真实的时间来计算,它送出SIGALRM信号
  2. ITIMER_VIRTUAL: -以该进程在用户态下花费的时间来计算,它送出SIGVTALRM信号
  3. ITIMER_PROF: 以该进程在用户态下和内核态下所费的时间来计算,它送出SIGPROF信号

it_interval:指定间隔时间

it_value:指定初始定时时间

  1. 如果只指定it_value,就是实现一次定时
  2. 如果同时指定 it_interval,则超时后,系统会重新初始化it_value为it_interval,实现重复定时
  3. 两者都清零,则会清除定时器

tv_sec:提供秒级精度

tv_usec:提供微秒级精度,以值大的为先

old_value:用来保存先前的值,常设为NULL

最新文章

  1. 项目分析_xxoo-master
  2. ps工具箱总结
  3. QT socket相关
  4. Oracle索引失效问题:WHERE C1='' OR C2 IN(SubQuery),并发请求时出现大量latch: cache buffers chains等待
  5. [数据库]关于MAX()函数的一个坑
  6. 20个最漂亮的基于WordPress的企业网站
  7. 庆祝POPTEST签约企业培训
  8. Visual Studio中将打开的代码与类文件进行关联
  9. Smarty3.1.3安装使用
  10. UNIX环境高级编程——进程环境
  11. pig的grunt中shell命令不稳定,能不用尽量不用
  12. UOJ#36. 【清华集训2014】玛里苟斯 线性基
  13. mongodb cxx driver学习
  14. 180510.最近踩过和听过的sql的坑
  15. [py]类的专有方法
  16. 赞 ( 84 ) 微信好友 新浪微博 QQ空间 180 SSD故事会(14):怕TLC因为你不了解!【转】
  17. Confluence 6 权限概述
  18. B. Berland National Library---cf567B(set|模拟)
  19. 第七章 ReentrantLock总结
  20. Android之使用XMLPull解析xml(二)

热门文章

  1. 浅入浅出 Go 语言接口的原理
  2. BayaiM__MYSQL千万级数据量的优化方法积累__初级菜鸟
  3. GIL全局解释器锁、死锁、递归锁、线程队列
  4. Mysql—索引原理与详解
  5. 海思屏幕HAL代码解析
  6. [日常] 使用TCPDUMP和Ethereal抓包分析HTTP请求中的异常情况
  7. GitHub 注册失败的原因 以及解决 。
  8. Educational Codeforces Round 78 (Rated for Div. 2) 题解
  9. <Math> 258 43
  10. hdu6494 dp