免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7497 | 回复: 10

sleep函数问题 [复制链接]

论坛徽章:
0
发表于 2010-07-01 20:50 |显示全部楼层
本帖最后由 kris_fei 于 2010-07-01 20:53 编辑

sleep函数中有说 ,如果被打断返回剩余时间,请问我要发什么信号恢复睡眠,继续执行下面的程序。

如:

  1. #include <unistd.h>
  2. #include <stdio.h>int main()
  3. {
  4.         int val = sleep(10);
  5.         printf("val:%d\n",val);

  6.         return 0;
  7. }
复制代码
请问我发送个什么信号给进程才能执行 printf("val:%d\n",val) 而不是退出程序。

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
发表于 2010-07-02 07:59 |显示全部楼层
循环检测控制?
LZ可以参考APUE2 10.19. sleep Function

论坛徽章:
0
发表于 2010-07-02 17:50 |显示全部楼层
本帖最后由 kgn28 于 2010-07-02 18:03 编辑

回复 1# kris_fei


    sleep随便发一个信号都会导致睡眠的终止吧,如果你想程序不退出,就修改默认的信号处理函数(大部分都是终止),或者选择默认忽略的信号(查了一下,好像SIGWINCH是忽略),或者你随便改一个就可以了吧:
void sig_action(){}
signal(SIGINT, sig_action)
然后发SIGINT
不知道我想的有何纰漏?
sleep 10000
然后kill -SIGWINCH 2895没反应
kill -SIGINT 2895,sleep退出。
这个程序你发sigint,就不会退出了。
  1. #include <unistd.h>
  2. #include <signal.h>
  3. #include <stdio.h>

  4. static void sig_action(){}

  5. int main()
  6. {
  7.         int val;

  8.         signal(SIGINT, sig_action);
  9.         for(;;){
  10.                 val = sleep(100000);
  11.                 printf("val:%d\n",val);
  12.         }   

  13.         return 0;
  14. }
复制代码
只不过signal这个函数的实现依赖系统,在POSIX中是不可靠的,可以考虑使用sigaction函数代替。

论坛徽章:
0
发表于 2010-07-03 18:55 |显示全部楼层
公司都禁用signal这个函数

论坛徽章:
0
发表于 2010-07-03 20:55 |显示全部楼层
回复 4# linux初学三月


    为啥?

论坛徽章:
0
发表于 2010-07-05 18:44 |显示全部楼层
用sigaction()。 signal这个函数会被打断

论坛徽章:
0
发表于 2010-07-06 00:35 |显示全部楼层
回复 6# linux初学三月


    打断?什么意思?不是说是信号会丢失?不可靠吗?

论坛徽章:
0
发表于 2010-07-06 22:53 |显示全部楼层
回复 6# linux初学三月


       signal()函数不是由sigaction()实现的吗?

论坛徽章:
0
发表于 2010-07-07 07:24 |显示全部楼层
什么,老大,别胡说。

signal()函数怎么是由sigaction()实现的

论坛徽章:
0
发表于 2010-07-07 07:25 |显示全部楼层
sigaction()是为了在一定程度上修正signal()函数的缺陷而出现的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP