linux下C编程延时问题

linux下C编程延时问题,第1张

延时可以用简单的循环实现的,比如:

int Delay(int x)

{

int i

i=x

while(i>=0)

i--

}

这样也算构成了一个延迟程序

我的需求是PING这个地址 只要延迟高于100ms就发送个邮件 然后正常后在发个邮件通知 之后正常不发 一有延迟就发 我这个老是重复 求高人指点 #!/bin/bashIP=`ping 8.8.8.8 -c 3|sed -n "2p" |awk '{print $7}'|cut -f 2 -d "="|cut -f 1 -d "."`L='100'a='tail -1 /opt/text.txt' | sed -n '1p'i='tail -1 /opt/text1.txt' | sed -n '1p'echo "$IP" >>/opt/text.txtecho "$IP" >>/opt/text1.txtif [[ $a -le $L ]]thenmail -s 'yanchi' 邮箱 <ar/log/boot.logelif [[ $a -ge $L ]]thenmail -s 'huifu' 邮箱 <ar/log/boot.logelseecho "ok"fi~我是想把这个延迟数写进一个文件里进行对比 延迟是会报 但是正常后不报 ,而且正常情况下运行还会发送 谁能帮忙看看

你对sleep可能有些误解,sleep本身就是使进程睡眠,睡眠的线程不会去占用CPU的。对于一个正在运行的线程来说,他最主要占用的资源就是CPU运行时间和内存。既然SLEEP使其放弃对CPU的进程权限(意思是这段时间内,他不会到CPU执行,如果想了解原因和具体实现可以参考linux内核代码对sleep的实现),那你不想让他占用资源意思就是说:不想让它占内存喽??

从定义角度来说,线程不拥有内存资源(从内核中可以查到fork和vfork创建的都是线程,他们都不会新分配内存空间,而是和父进程共享内存空间),所以说你已经没有什么可以释放了。如果还不明白,可以发信息给我。

或许你更希望做的是,压根就不启动这个线程,而是一个小时后启动。因为你没有办法然main主线程1小时后启动这个线程,因为你把握不好时间,那我可以建议你考虑下linux守护线程cron,这个可以达到你1小时后启动的目的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7205638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存