sleep使用的是alarm之类的定时器,定时器是使得进程被挂起,使进程处于就绪的状态。

signal+alarm定时器

alarm参数的类型为uint, 并且不能填0

#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>
#include <signal.h> void sigalrm_fn(int sig) {
printf("alarm!\n");
alarm(0.1);
return;
} int main(void) {
signal(SIGALRM, sigalrm_fn); //后面的函数必须是带int参数的
alarm(1);
while(1);
pause(); }

比alarm精度更高的定时器

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/time.h> void test_func()
{
static count = 0; printf("count is %d\n", count++);
} void init_sigaction()
{
struct sigaction act;
act.sa_handler = test_func; //设置处理信号的函数
act.sa_flags = 0; sigemptyset(&act.sa_mask);
sigaction(SIGPROF, &act, NULL);//时间到发送SIGROF信号
} void init_time()
{
struct itimerval val; val.it_value.tv_sec = 0; //1秒后启用定时器
val.it_value.tv_usec = 1; val.it_interval = val.it_value; //定时器间隔为1s setitimer(ITIMER_PROF, &val, NULL);
} int main(int argc, char **argv)
{ init_sigaction();
init_time(); while(1); return 0;
}

sleep usleep nanosleep alarm setitimer使用的更多相关文章

  1. Linux下的微秒级定时器: usleep, nanosleep, select, pselect

    Linux下的微秒级定时器: usleep, nanosleep, select, pselect 标签: linuxnulldelaystructdate 2012-02-07 23:29 4979 ...

  2. UNIX环境高级编程——信号之kill、raise、killpg、alarm、pause、abort、sleep、usleep、nanosleep和setitimer函数

    一.kill, raise, killpg 函数 int kill(pid_t pid, int sig); int raise(int sig); int killpg(int pgrp, int ...

  3. Linux平台延时之sleep、usleep、nanosleep、select比较

    Linux平台延时之sleep.usleep.nanosleep.select比较 标签: 嵌入式thread线程cpu多线程 2015-05-05 15:28 369人阅读 评论(0) 收藏 举报 ...

  4. Linux中的sleep、usleep、nanosleep、poll和select

    在进行Linux C/C++编程时,可调用的sleep函数有好多个,那么究竟应当调用哪一个了?下表列出了这几个函数间的异同点,可作为参考: 性质 精准度 线程安全 信号安全 sleep libc库函数 ...

  5. muduo网络库学习笔记(10):定时器的实现

    传统的Reactor通过控制select和poll的等待时间来实现定时,而现在在Linux中有了timerfd,我们可以用和处理IO事件相同的方式来处理定时,代码的一致性更好. 一.为什么选择time ...

  6. 《Linux/Unix系统编程手册》 时间子系统

    Linux下操作系统编程有两本经典APUE即<Advanced Programming in the UNIX Environment>和TLPI<The Linux Program ...

  7. Mudo C++网络库第七章学习笔记

    muduo编程示例 muduo库是设计来开发内网的网络程序, 它没有做任何安全方面的加强措施, 如果在公网上可能会受到攻击; muduo库把主动关闭连接这件事分成两步来做: 如果主动关闭连接, 会先关 ...

  8. Linux下定时器

    http://unix8.net/linux%E4%B8%8B%E5%AE%9A%E6%97%B6%E5%99%A8.html 一. 基础知识 1.时间类型.Linux下常用的时间类型有4个:time ...

  9. (笔记)Linux延时及时间函数总结

    一. 基础知识1.时间类型.Linux下常用的时间类型有4个:time_t,struct timeval,struct timespec,struct tm.(1)time_t是一个长整型,一般用来表 ...

随机推荐

  1. python 全局种子与局部种子

  2. redis书籍

    redis中文官网命令网址:http://doc.redisfans.com/ redis英文官网命令网址:https://redis.io/commands redis书籍 由 Karl Segui ...

  3. 复习解析嵌套json

    在网络上找的一些经典的例子复习使用 一,解析嵌套json字符串,一个json字符串中嵌套另一个json字符串 { "msg": { "resCode": &qu ...

  4. Python3 中 configparser 使用注意事项

    在使用configparser时候应注意: ①配置文件(ini文件)的存放位置:配置文件和调用文件放在同一个文件包下面. 使用read()函数读取并解析配置文件时,直接写配置文件(ini文件)的文件名 ...

  5. Hdu 4751(2-SAT)

    题目链接 Divide Groups Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  6. Java开发中的Memcache原理及实现

    Memcached 客户端程序 Memcached的java客户端已经存在三种了: ?  官方提供的基于传统阻塞io由Greg Whalin维护的客户端 ?  Dustin Sallings实现的基于 ...

  7. DataIntputStream / DataOutputStream 类

    1. DataInputStream类(熟悉)   (1)基本概念 java.io.DataInputStream类用于读取java中的基本数据类型.   (2)常用的方法 DataInputStre ...

  8. Leetcode876.Middle of the Linked List链表的中间节点

    给定一个带有头结点 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4 ...

  9. 创建一个User类

    1.用户模型—User类 用户模型或者叫账户模型,为什么这么说看下面代码 using System; using System.ComponentModel.DataAnnotations; name ...

  10. Python之collection

    1.计数器(counter) Counter是对字典类型的补充,用于追踪值的出现次数. ps:具备字典的所有功能 + 自己的功能 c = Counter('abcdeabcdabcaba') prin ...