signal与定时器
来源:互联网 发布:ubuntu 怎么进入u盘 编辑:程序博客网 时间:2024/04/30 03:19
1. signal
sighandler_t signal(int signum, sighandler_t handler);
signum:是一个信号。除了SIGKILL和SIGSTOP外的任何一种信号
handler:
- 无返回值的函数地址
- SIG_IGN:忽略参数signum所指的信号
- SIG_DFL:恢复系统对信号的默认处理
注:当一个信号的信号处理函数执行时,如果进程又接收到了该信号,该信号会自动被储存而不会中断信号处理函数的执行,直到信号处理函数执行完毕再重新调用相应的处理函数。但是如果在信号处理函数执行时进程收到了其它类型的信号,该函数的执行就会被中断
查看64信号:
kill -l
2. kill
int kill(pid_t pid, int sig);
- 如果参数pid是正数,那么该调用将信号sig发送到进程号为pid的进程
- 如果pid等于0,那么信号sig将发送给当前进程所属进程组里的所有进程
- 如果参数pid等于-1,信号sig将发送给除了进程1和自身以外的所有进程
- 如果参数pid小于-1,信号sig将发送给属于进程组-pid的所有进程
- 如果参数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:
- ITIMER_REAL: 以系统真实的时间来计算,它送出SIGALRM信号
- ITIMER_VIRTUAL: -以该进程在用户态下花费的时间来计算,它送出SIGVTALRM信号
- ITIMER_PROF: 以该进程在用户态下和内核态下所费的时间来计算,它送出SIGPROF信号
it_interval:指定间隔时间
it_value:指定初始定时时间
- 如果只指定it_value,就是实现一次定时
- 如果同时指定 it_interval,则超时后,系统会重新初始化it_value为it_interval,实现重复定时
- 两者都清零,则会清除定时器
tv_sec:提供秒级精度
tv_usec:提供微秒级精度,以值大的为先
old_value:用来保存先前的值,常设为NULL
0 0
- signal与定时器
- linux下signal与alarm函数实现定时器刷新
- Linux 信号signal处理机制、定时器
- QML signal与signal handler系统
- signal 与事件
- sigaction与signal
- signal与raise,sigaction
- pthread_cond_wait与signal
- signal 与 APC
- Qt 定时器signal/slot阻塞主线程界面
- C之基于signal实现定时器的demon
- 关于alarm设置与Signal
- sigaction与signal 简单用法
- signal与sigaction函数使用
- 再谈 Signal 与 APC 实现
- spring定时器与quartz定时器
- signal
- signal
- 计算Fibonacci数,循环和递归
- at91sam9260ek的板级、irq初始化-小试牛刀
- MYSQL分库分表总结
- STL源码剖析之【二分查找】
- Android 基于Netty的消息推送方案之概念和工作原理(二)
- signal与定时器
- Eclipse启动时f出现ail to create Java Virtual Machine问题的解决
- C#基础-----虚方法实现多态
- [pgsql]pgsql数据库时间函数
- Android 基于Netty的消息推送方案之字符串的接收和发送(三)
- 查看可执行程序的依赖库
- Js获取当前日期时间及其它操作
- 不使用UIImagePickerControllerOriginalImage获取相册图片
- MongoDB常用命令