linux C之alarm函数 转

原文出处:http://blog.sina.com.cn/s/blog_6a1837e90100uhl3.html

alarm也称为闹钟函数,alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回。要注意的是,一个进程只能有一个闹钟时间,如果在调用alarm之前已设置过闹钟时间,则任何以前的闹钟时间都被新值所代替。

所需头文件
  #include<unistd.h>

函数原型
  unsigned int alarm(unsigned int
seconds)

函数参数
  seconds:指定秒数

函数返回值
  成功:如果调用此alarm()前,进程已经设置了闹钟时间,则返回上一个闹钟时间的剩余时间,否则返回0。

  出错:-1

代码

#include<unistd.h>
#include<signal.h>
void handler()

{
   
printf("Hello\n");
    signal(SIGALRM, handler);
//让内核做好准备,一旦接受到SIGALARM信号,就执行 handler
    alarm(5);
}

void main()
{
    int i;
   
handler();
   
for(i=1;i<21;i++)

{
       
printf("sleep %d ...\n",i);
       
sleep(1);
    }
}

结果:刚开始在main中执行一次,然后每隔5秒执行一次handler()

Hello
sleep 1 ...
sleep 2 ...
sleep 3 ...
sleep 4 ...
sleep 5 ...
Hello
sleep 6 ...
sleep 7 ...
sleep 8 ...
sleep 9 ...
sleep 10 ...
Hello
sleep 11 ...
sleep 12 ...
sleep 13 ...
sleep 14 ...
sleep 15 ...
Hello
sleep 16 ...
sleep 17 ...
sleep 18 ...
sleep 19 ...
sleep 20 ...
Hello

注意:alarm只设定一个闹钟,时间到达并执行其注册函数之后,闹钟便失效。如果想循环设置闹钟,需在其注册函数中在调用alarm函数。

时间: 2024-11-25 19:27:05

linux C之alarm函数 转的相关文章

linux C之alarm函数

alarm也称为闹钟函数,alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程.如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回.要注意的是,一个进程只能有一个闹钟时间,如果在调用alarm之前已设置过闹钟时间,则任何以前的闹钟时间都被新值所代替. 所需头文件 #include<unistd.h> 函数原型 unsigned int alarm(unsigned int seconds) 函数参数 seconds:指定秒数 函数返

Linux时间类型、函数和休眠函数

        转载请注明出处: http://blog.csdn.net/luotuo44/article/details/39374759 本文主要涉及Linux时间类型.时间函数以及Linux提供的睡眠函数. 时间类型和对应的函数: time_t: 最不陌生的时间类型恐怕是time_t这个类型了吧.它出现在C语言的标准库.但ISO C中并没有规定time_t是什么类型.范围以及精度,不过在POSIX中一般是被实现为有符号的整型. time_t的单位是秒.函数time()的返回值就是一个ti

linux内核系统调用--sendfile函数

在apache,nginx,lighttpd等web服务器当中,都有一项sendfile相关的配置,在一些网上的资料都有谈到sendfile会提升文件传输性能,那sendfile到底是什么呢?它的原理又是如何呢? 在传统的文件传输里面(read/write方式),在实现上其实是比较复杂的,需要经过多次上下文的切换,我们看一下如下两行代码: Java代码 read(file, tmp_buf, len); write(socket, tmp_buf, len); 以上两行代码是传统的read/wr

linux下转格式函数iconv段错误

今天将windows代码移植到Linux下,其中用到了Unicode转char的函数,被坑了一会,相关函数及编码格式,Linux与windows不同,有几点需要注意: 1.wchar_t 在Linux下占用4个字节,在windows下占2个字节: 2.Linux默认的文本编码方式是UTF-8:Linux终端汉字显示的设置方式:vi /etc/sysconfig/i18n: 设置LANG="en_US.UTF-8"或者LANG="zh_CN.UTF-8": 3.ico

linux C之access函数

linux C之access函数 access():判断是否具有存取文件的权限 相关函数    stat,open,chmod,chown,setuid,setgid表头文件    #include<unistd.h>定义函数    int access(const char * pathname, int mode);函数说明    access()会检查是否可以读/写某一已存在的文件.参数mode有几种情况组合, R_OK,W_OK,X_OK 和F_OK.R_OK,W_OK与X_OK用来检

linux下的信号处理函数总结

1.信号处理函数 相关函数原型如下: #include <signal.h> sighandler_t signal(int signum, sighandler_t handler); 第一参数是信号 第二个参数是信号处理器:             1.可以是SIG_DFL,信号的默认动作             2. 可以是SIG_IGN,忽略该信号             3. 一个带有一个整型参数的处理函数. #include <signal.h> int sigacti

linux下C语言函数执行时间统计

转载:http://blog.csdn.net/linquidx/article/details/5916701#t5 写好程序,用gcc编译,带上-pg参数,然后运行以后分析gmon.out文件: 命令exp:   gprof ./test-main ./gmon.out >1.log  在1.log中会生成各函数运行情况. gprof 1.1 简介 gprof实际上只是一个用于读取profile结果文件的工具.gprof采用混合方法来收集程序的统计信息,他使用检测方法,在编译过程中在函数入口

linux C之access函数 (20

http://blog.sina.com.cn/s/blog_6a1837e90100uh5d.html linux C之access函数 (20access():判断是否具有存取文件的权限 相关函数    stat,open,chmod,chown,setuid,setgid 表头文件    #include<unistd.h>定义函数     int access(const char * pathname, int mode);函数说明    access()会检查是否可以读/写某一已存

Linux下利用ioctl函数获取网卡信息

linux下的ioctl函数原型如下: #include <sys/ioctl.h> int ioctl(int handle, int cmd, [int *argc, int argv]) 函数成功返回0,失败返回-1. 其相关命令接口如下: 类别 Request 说明 数据类型 套 接 口 SIOCATMARK SIOCSPGRP SIOCGPGRP 是否位于带外标记 设置套接口的进程ID 或进程组ID 获取套接口的进程ID 或进程组ID int int int 文 件 FIONBIO