linux系统下定时器函数,linux下定时器介绍2--timer_create等函数集的使用示例

程序1:采用新线程派驻的通知方式

程序2:通知方式为信号的处理方式

#include

#include

#include

#include

#include

#include

#define CLOCKID CLOCK_REALTIME

void sig_handler(int signo)

{

printf("timer_signal function! %d\n", signo);

}

int main()

{

//XXX int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);

// signum--指定的信号编号,可以指定SIGKILL和SIGSTOP以外的所有信号编号

// act结构体--设置信号编号为signum的处理方式

// oldact结构体--保存上次的处理方式

//

// struct sigaction

// {

// void (*sa_handler)(int);//信号响应函数地址

// void (*sa_sigaction)(int, siginfo_t *, void *); //但sa_flags为SA——SIGINFO时才使用

// sigset_t sa_mask; //说明一个信号集在调用捕捉函数之前,会加入进程的屏蔽中,当捕捉函数返回时,还原

// int sa_flags;

// void (*sa_restorer)(void);//未用

// };

//

timer_t timerid;

struct sigevent evp;

struct sigaction act;

memset(&act, 0, sizeof(act));

act.sa_handler = sig_handler;

act.sa_flags = 0;

// XXX int sigaddset(sigset_t *set, int signum); //将signum指定的信号加入set信号集

// XXX int sigemptyset(sigset_t *set);//初始化信号集

sigemptyset(&act.sa_mask);

if (sigaction(SIGUSR1, &act, NULL) == -1)

{

perror("fail to sigaction");

exit(-1);

}

memset(&evp, 0, sizeof(struct sigevent));

evp.sigev_signo = SIGUSR1;

evp.sigev_notify = SIGEV_SIGNAL;

if (timer_create(CLOCK_REALTIME, &evp, &timerid) == -1)

{

perror("fail to timer_create");

exit(-1);

}

struct itimerspec it;

it.it_interval.tv_sec = 2;

it.it_interval.tv_nsec = 0;

it.it_value.tv_sec = 1;

it.it_value.tv_nsec = 0;

if (timer_settime(timerid, 0, &it, 0) == -1)

{

perror("fail to timer_settime");

exit(-1);

}

pause();

return 0;

}

linux下定时器介绍1

POSIX Timer 间隔定时器 setitimer 有一些重要的缺点,POSIX Timer 对 setitimer 进行了增强,克服了 setitimer 的诸多问题: 首先,一个进程同一时刻只 ...

Linux下C语言编程实现spwd函数

Linux下C语言编程实现spwd函数 介绍 spwd函数 功能:显示当前目录路径 实现:通过编译执行该代码,可在终端中输出当前路径 代码实现 代码链接 代码托管链接:spwd.c 所需结构体.函数. ...

.Neter玩转Linux系列之四:Linux下shell介绍以及TCP、IP基础

基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...

Linux下定时器

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

linux下定时器的实现

简介: linux下经常有这样的需求,需要定时轮询执行某种任务,当然,用shell脚本的话,crontab和at就可以满足要求.如果从C语言的角度来看,实现定时器也是一个比较简单的任务,因为具有普遍性 ...

Linux下tmpfs介绍及使用

tmpfs介绍 tmpfs是一种虚拟内存文件系统,而不是块设备.是基于内存的文件系统,创建时不需要使用mkfs等初始化它最大的特点就是它的存储空间在VM(virtual memory),VM是由lin ...

LINUX下FD_SET介绍

刚刚了解了linux下select系统调用,函数原型是 #include #include int select(int ...

Linux下编译C代码,出现tan函数报错的情况

undefined reference to `tan' 但是已经包含了头文件 了,可还是报错,说是找不到tan 这个问题的原因不是很清楚, 但是网上给出的方案,就是编译的 ...

linux下信号量可设值的函数操作

#include #include #include #include

随机推荐

UWP深入学习四:动画及图像

Storyboarded animations Key-frame animations and easing function animations 缓动函数 缓动函数支持你将自定义数学公式应用到动 ...

Oracle登录时提示错误,导致用户无法登录

Oracle登录时提示错误,导致用户无法登录,错误如下 ------------------------------------------------------------------------ ...

工具批处理Demo

前言:用C语言写一些小型工具时,使用传递参数的方式会比较方便.如GIF文件转换为头文件工具,如果我们需要将某一个文件夹里所有的gif文件都转换为头文件,这时我们用批处理给这个工具传递参数,会方便很多. ...

扫描局域网内的ip和主机名

1. 目的 今天发现我配置的一台电脑ip被人占用了,所以准备写个程序扫描一下局域网内所有正在使用的ip和主机名 2. 实现--直接上代码 import time import threading im ...

VS code 代码高亮

因为平时经常切换笔记本.家里台式机.工作台式机用 VS code,遂发现笔记本中的 javascript 不像台式机中对象和方法语法高亮,只有简单的关键词高亮.后来找到原因系主题设置.[文件]-[首选 ...

CentOS / RHEL 7 : How to setup yum repository using locally mounted DVD

1. Mount the RHEL 7 installation media ISO to some directory. For example /mnt : # mount -o loop rhe ...

Django安装配置

django2.0基础 一.安装与项目的创建 1.安装 pip install django 2.查看版本 python -m django --version 3.创建项目 django-admin ...

JNLP文件具体说明编辑

JNLP(Java Network Launching Protocol )是java提供的一种可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url连接打开一个java应 ...

flush logs时做的操作

flush logs时做的操作:  对于一般查询日志和慢日志,先关闭文件再打开  对于binlog,关闭当前的,开始用下一个新的  用错误日志文件的话,先关闭再打开flush logs可以对一般查询日 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值