Linux多进程14-alarm函数

#include <unistd.h>
unsigned int alarm(unsigned int seconds);
    - 功能: 设置定时器, 函数调用后开始倒计时, 当倒计时为0时,
        函数会给当前进程发送一个信号:SIGALARM
    - 参数:
        seconds: 倒计时的时长, 单位:秒.
            - 如果参数为0, 定时器无效(不进行倒计时, 不发信号)
            - alarm(0); 取消一个定时器
    - 返回值:
        - 之前没定时器, 返回0
        - 之前有定时器, 返回之前的定时器剩余的时间

- SIGALARM: 默认终止当前的进程, 每一个进程都有且只有唯一的一个定时器
    alarm(10); //返回0
    过了1秒
    alarm(5); //返回上一个定时器剩余时间:9

    alarm(100); //该函数不阻塞

示例代码

#include <unistd.h>
#include <stdio.h>

int main(int argc, char const *argv[])
{
    int seconds = alarm(5);
    printf("seconds = %d\n", seconds); //0
    sleep(2);
    seconds = alarm(2);
    printf("seconds = %d\n", seconds); //3

    //10s 结束后, 程序会给当前进程发送SIGALARM信号, 程序终止, 不会死循环
    while (1)
    {
    }

    return 0;
}

运行

$./alarm 
seconds = 0
seconds = 3
闹钟

案例: 计算机一秒钟能数多少个数

// 1s 电脑能数多少个数

#include <stdio.h>
#include <unistd.h>

int main(int argc, char const *argv[])
{
    alarm(1);
    int i = 0;
    while (1)
    {
        printf("%i\n", i++);
    }

    return 0;
}

使用重定向到文件节省IO

$./alarmC >> alarmC.txt
闹钟

本文作者:言叶以上

本文链接:https://www.cnblogs.com/anqwjoe/p/17409743.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   言叶以上  阅读(61)  评论(0编辑  收藏  举报
历史上的今天:
2018-05-17 Vue.js 基础知识
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起