[常规] nanosleep() -- 更精确的延迟

[复制链接]

   

4220

主题

5152

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

积分
30607
电梯直达

楼主

 
 发表于 2010-8-22 00:08:53 | 只看该作者 
原型:

#include <time.h>
int nanosleep(const struct timespec *req, struct timespec *rem);

说明:
此函数将调用进程挂起,直到 req 里所指的时间结束。req 是 struct timespec 结构体的指针。struct timespec 结构体定义如下:

struct timespec {
   time_t tv_sec;        /* 秒 */
   long   tv_nsec;       /* 纳秒 */
};

如果在调用 nanosleep() 睡眠期间被信号所中断,nanosleep() 就会返回 -1,同时设置 errno 为 EINTR,并且会将剩余的时间写入由 rem 所指向同样时 struct timespec 类型的结构体中,如果 rem 为 NULL,就不会记录剩余时间。当信号处理完毕时,还会继续调用 nanosleep() 直到剩余时间用完为止。

测试程序:

;
     )
     ;
);
     );
      );
;
     ;
     ) );
     );
}

运行与输出:

$ ./nanosleep 
5
testing-1
testing-2
^C测试-2被信号中断,剩余时间为: 4秒120263116纳秒
^C测试-2被信号中断,剩余时间为: 3秒440359866纳秒
^C测试-2被信号中断,剩余时间为: 2秒320431341纳秒
^C测试-2被信号中断,剩余时间为: 1秒320495448纳秒
testing-3
... ...

上面,^C 表示按下 Ctrl + c 组合键,发出中断函数信号。

 
 from:http://www.groad.net/bbs/thread-2621-1-1.html
 
 

nanosleep() -- 更精确的延迟 -----一个使用用例的更多相关文章

  1. UML和模式应用4:初始阶段(6)--迭代方法中如何使用用例

    1.前言 用例是UP和其他众多迭代方法的核心.UP提倡用例驱动开发. 2. 迭代方法中如何使用用例 功能需求首先定义在用例中 用例是迭代计划的重要部分,迭代是通过选择一些用例场景或整个用例来定义的 用 ...

  2. [转]PROC简单使用用例--VC连接ORACLE

    [转]PROC简单使用用例--VC连接ORACLE 操作系统:windows 7 数据库版本:oracle 10g VS版本:VS2010 前言:连接ORACLE的方式有很多,此处仅以PROC为例,说 ...

  3. GCOV 使用用例

      1.GCOV查看arm-linux代码覆盖率 一.           关于gcov工具 gcov伴随gcc 发布.gcc编译加入-fprofile-arcs -ftest-coverage 参数 ...

  4. httpclient使用用例

    import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import jav ...

  5. 在Visual Studio中使用用例图描述参与者与用例的关系

    在"在Visual Studio中使用用例图描述系统与参与者间的关系"中,使用用例图表示参与者与系统的关系,本篇体验参与者与用例(参与者要做的事情)的关系. 首先创建有关Custo ...

  6. 尽量少嵌套无用的div;外部文件尽量使用link而不要使用用@import

    最近的工作又学到了很多东西,在这里记录一下. 1,尽量少嵌套无用的div,这个问题领导很严肃的跟我提过很多次,因为我很喜欢用很多div,而且有很多div都是无存在意义的.后来领导给了我一些资料,我看了 ...

  7. 如何让classmethod只允许使用用类对象来调用

    Django REST framework里面有这样一段代码,在网上查@classonlymethod的意思是使得classmethod只允许使用用类对象来调用 @classonlymethod de ...

  8. Mac 上 QuickTime Player 播放器以 1.1、1.2 倍速等更精确速度快进/快退播放的方法

    苹果的 QuickTime Player 播放器上点击双箭头按钮可以用 2.4.8 倍的速度快进/快退播放视频,但是 2 倍速太快了,如果我想以 1.1.1.2 倍速这种更精确的速度控制视频播放呢?按 ...

  9. var 更明确地表示一个变量被设置为零值

    创建一个变量并被初始化其为零值,习惯使用关键字var.这种做法是为了更明确地表示一个变量被设置为零值. 如果变量被初始化为某个非零值,就配合结构字面量和短变量操作符来创建变量. 零值 数值类型:0 字 ...

随机推荐

  1. 54. Android中adb常用命令及应用常用目录

    本文主要介绍adb常用命令及应用常用目录.1.adb常用命令adb devices列出所有连接的android设备.以下命令都是对单个devices而言,如果存在多个devices的话,下面的命令都需 ...

  2. [vijos1002][NOIP2005]过河

    Description 给定一条数轴,起点为0,数轴的某些整数点上有石子.每次可以移动的区间为[S,T].求当到达或超过L时,最少踩到的石子数. Input 输入的第一行有一个正整数L(1 <= ...

  3. JVM学习笔记:虚拟机的类加载机制

    JVM类加载机制分两部分来总结: (1)类加载过程 (2)类加载器 一.JVM类加载过程 类的加载过程:加载 →连接(验证 → 准备 → 解析)→ 初始化. 类的生命周期:加载 →连接(验证 → 准备 ...

  4. 【BZOJ-3156】防御准备 DP + 斜率优化

    3156: 防御准备 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 951  Solved: 446[Submit][Status][Discuss] ...

  5. eclipse中项目右上方有一个s,eclipse中项目左下方友谊个红色的叉,eclipse中项目左下方友谊个红色的感叹号

    S,这个猜测使用了Spring tools 然后可以方便的建立xml配置文件,然后平时不用在意 红的叉,这个可能是tomcat没有的不合适,可以在properties里面的找到runtime然后改成合 ...

  6. easyui使用datagrid时列名包含特殊字符导致表头与数据错位的问题

    做一个用easyui的datagrid显示数据的功能时发现表格的列头与数据错位了,而且这个现象不总是能重现,一直没搞清楚原因.后来偶然在控制台看出了一点端倪: 推测表头或者单元格的class名应该是用 ...

  7. Mac配置一些开发环境(随时补充)

    Mac安装mysql并启动 brew install mysql mysql.server start /usr/local/Cellar/mysql/5.6.10/support-files/mys ...

  8. JS生成随机数的各种函数

    第一种方法 /* *@desc:生成随机字符串 *@remark:toString方法可以接收一个基数作为参数的原理,这个基数从2到36封顶.如果不指定,默认基数是10进制 */ function g ...

  9. .net 运用YUI相关的dll压缩js (按照自己的规则,想想都觉得强大和有趣)

    写在前面 不管是做前端的还是做后台的,不管是懂javaScript的还是不太懂JavaScript的人,我想都或多或想的知道些许js压缩对于页面性能提升的效应吧. 之前老喜欢用在线压缩工具去压缩js, ...

  10. OC之从键盘输入NSString字符串

    方法一: char *a; static char z; a = &z; gets(a); NSString *intput = [NSString stringWithUTF8String: ...