本帖最后由 hbmhalley 于 2011-12-17 12:35 编辑
我想搞一个计时器,由于alarm不够精准,于是找到了timer
但是 我希望在exec之后仍能超时,这点alarm可以做到,但timer却做不到,这是为什么?[code]
//dead.c
// gcc dead.c -o dead
int main () {
for (;;);
}
[/code][code]
//alrm.c
// gcc alrm.c -o alrm -lrt
#include
by hbmhalley - Linux环境编程 - 2011-12-17 12:33:59 阅读(2719) 回复(0)
自己写了一个测试程序,区别alarm函数和sleep的区别 int main() { int ret; // ret = alarm(5); ret = sleep(5); // ret = alarm(1); // pause(); // ret = alarm(2); printf("I have been wake up\n"); printf("%d\n",ret); return 0; } 若是调用sleep(5)的话,执行程序就会等待5秒钟输出I have been wake up和0 若调用alarm(5),执行程序就输出alarm CLOCK。而不输出其它信息。这是为什么啊? 在UNIX平台下编译的。
问题1:在linux中,alarm函数和sleep函数都是睡眠函数,两者之间的区别是什么呢? 问题2:alarm函数的返回值是什么? 问题3:如果几个alarm函数连用的情况下,结果是怎样的呢?
以下内容根据 The JavaTM Tutorial 和相关API doc翻译整理,以供日后参考: 1.概览 timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。 timerTask一个抽象类,它的子类代表一个可以被timer计划的任务。 简单的一个例程: import java.util.timer; import java.util.timerTask; /** * Simple demo that uses java.util.timer to schedule a task to execute * once 5 seconds hav...
我在tomcat servlet程序中使用了timer对象,定时处理一些后台程序,如定时更新数据等。但是我发现servlet发布后CPU的利用率特别高,即使我在timer对象中什么都不做,CPU的利用率也占50%左右。实在不明白是什么原因导致了上述的现象,应该如何避免这种现象?谢谢。 servlet部分代码示例: public void init() throws ServletException { java.util.timer timer = new java.util.timer(); timer.schedule(new timerTask(){ pu...
#include
我指的是在同一个进程中,它们会不会相互影响?虽然有点自找麻烦的嫌疑:mrgreen:
测试代码:
[code]
#include
1、我的以下代码在一个函数中,我想通过 alarm 控制超时,其实就是没有哪个给它发送信息的时候,也就是 recvfrom 永远不可能接受到东西的时候,通过 alarm 函数控制超时。但是 my_sig_alarm()函数被正常调用呢,但程序不能继续进行下去,甚至连紧跟在 recvfrom后面的 fprintf都不能显示。我开始怀疑是 alarm时间短了CPU还没运行到recvfrom来alarm就执行了,我把时间设长了一样不行。 请大家帮忙看看是什么原因!谢谢! { ala...
1、我的以下代码在一个函数中,我想通过 alarm 控制超时,其实就是没有哪个给它发送信息的时候,也就是 recvfrom 永远不可能接受到东西的时候,通过 alarm 函数控制超时。但是 my_sig_alarm()函数被正常调用呢,但程序不能继续进行下去,甚至连紧跟在 recvfrom后面的 fprintf都不能显示。我开始怀疑是 alarm时间短了CPU还没运行到recvfrom来alarm就执行了,我把时间设长了一样不行。 请大家帮忙看看是什么原因!谢谢! { alarm...