有这样一个问题: 程序中,需要一个定时器,定期去检查一些东西。。 用 signal(SIGALAM,my_fun); ... setitimer(ITIMER_REAL,&a,&b); 假设TIMEOUT是1S,可以正常工作。。 问题在于,程序中有另外一个地方,用到了select();比如说TIMEOUT是2S; 当signal()使用信号量 SIGANLAM的时候,select();不到2S就TIMEOUT了; (相信是因为,select()也是用signal(SIGALAM,select)来计算时间的) 这样就导致了select()不可以正常工作。...
#include #include #include #include /************关于本文档******************************************** *filename: setitimer.c *purpose: 显示了设置闹钟的方法 *wrote by: zhoulifa(zhoulifa@163.com) 周立发(http://zhoulifa.bokee.com) Linux爱好者 Linux知识传播者 SOHO族 开发者 最擅长C语言 *date time:2008-01-26 2333 上海大雪天,据说是多年不遇 *Note: 任何人可以任意复制代码并运用这些文档,当然包括你的...
一般来说setitimer计数完后,会发信号SIGALRM给struct sigaction中的注册函数,我想问的是:它的计数是timeout后是否重新开始计数,不停的循环;还是只计数一次,timeout后就停止了?
一般来说setitimer计数完后,会发信号SIGALRM给struct sigaction中的注册函数,我想问的是:它的计数是timeout后是否重新开始计数,不停的循环;还是只计数一次,timeout后就停止了?
看看这断test程序
#include
我指的是在同一个进程中,它们会不会相互影响?虽然有点自找麻烦的嫌疑:mrgreen:
测试代码:
[code]
#include
setitimer设定以后,会被那些信号中断啊。 我在程序中起来一个子进程来setitimer,然后再起一个进程建立socket连接,发现当网线被罢出来以后 起setitimer的子进程就死掉了 if(fork()==0) { soctimer(); } int soctimer() { struct itimerval v; v.it_interval.tv_sec=TV_SEC; v.it_interval.tv_usec=0; v.it_value.tv_sec=TV_BSEC; v.it_value.tv_usec=0; /*定时签到*/ setitimer(ITIMER_REAL, &v, NULL); ...
小弟想问大家一个问题,就是linux c编程中,setitimer系统调用是向调用该函数的进程发送信号呢还是向所有进程发送信号阿?这个系统调用能向指定的进程发送信号吗?具体应该怎么用阿?
【getitimer/setitimer系统调用】 功能描述: 获取或设定间歇计时器的值。系统为进程提供三种类型的计时器,每一类以不同的时间域递减其值。当计时器超时,信号被发送到进程,之后计时器重启动。 用法: #include int getitimer(int which, struct itimerval *value); int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue); 参数: which:间歇计时器类型,有三种选择 ITIMER_REAL //...