linux中alarm函数的实例讲解

linux alarm函数简介

上代码:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
int main(int argc, char *argv[])
{
 alarm(5);
 sleep(20);
 printf("end!\n");
 return 0;
}

运行5秒后,内核向进程发出SIGALRM信息,进程被终止,所以上述程序的结果是:

Alarm clock

当然,我们也可以人为定义信号处理函数,如下:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
void sig_alarm(int sig)
{
 printf("sig is %d, sig_alarm is called\n", sig);
}
int main(int argc, char *argv[])
{
 signal(SIGALRM, sig_alarm); // 注册alarm信号对应的函数
 alarm(5); // 5秒后,内核向进程发出alarm信号, 执行对应的信号注册函数
 sleep(20);
 printf("end!\n");
 return 0;
}

结果:

sig is 14, sig_alarm is called
end!

可以看到,内核向应用进程发出SIGALRM信号,执行对应的注册函数,而非杀死进程。

很简单,先说这么多。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • linux上安装Docker(非常简单的安装方法)

    最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像.容器.仓库 镜像:类似虚拟机的镜像.用俗话说就是安装文件. 容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例,可以将其启动.开始.停止.删除.而这些容器都是相互隔离.互不可见的. 仓库:类似代码仓库,是Docker集中存放镜像文件的场所. 简单介绍一下在CentOS上安装Docker. 前置条件: 64-bit 系统 kernel 3.10+ 1.检查内核版本,返回的值

  • linux搭建squid代理服务器的完整步骤

    前言 本文主要给大家介绍了关于 linux 搭建squid代理服务器的相关内容,下面话不多说了,来一起看看详细的介绍吧 实验环境: 一台linux搭建Web服务器,充当内网web服务器(同时充当内网客户端) 202.100.10.100 一台linux系统充当网关服务器,两个网卡,开启路由转发 192.168.133.131和202.100.10.1 一台linux搭建Web服务器,充当外网web服务器(同时充当外网客户端)) 192.168.133.131 实验步骤: 1.配置内网web服务器

  • Linux下Docker CE使用从包中安装的方式详解

    使用从包中安装的方式,在Linux上安装Docker CE 1.查看Linux系统信息nuame -a 我的是Debian, amd64 2.查看Linux 系统发行版的名称 lsb_release -cs 我的是stretch 3.进入到下载包页面https://download.docker.com/linux/ 第一步获取的Debian,点击进入debian>dists 进入了这个连接地址 https://download.docker.com/linux/debian/dists/ 第二

  • Linux Docker安装wordpress的方法详解教程

    安装mysql服务 下载mysql镜像: docker pull mysql 创建mysql容器并后台运行,指定数据库密码是123456.-e指定环境变量. docker run --name mysql_db -e MYSQL_ROOT_PASSWORD=123456 -d mysql 使用官方的wordpress wordpress镜像daocloud.io: docker pull daocloud.io/daocloud/dao-wordpress:latest 拉取镜像前请先登录: d

  • 在Linux上安装和使用Docker的方法

    容器现在风靡于 IT 界 -- 这很好理解.容器是轻量级的,包含应用运行所需所有东西(代码.库.运行时环境.系统设置,以及依赖关系)的独立的包.每个容器都部署于它自己的 CPU.内存.块 I/O,以及网络资源上,所有这些都不依赖于某个内核和操作系统.这也是容器与虚拟机之间最大的不同:相比之下,虚拟机是一个运行于宿主机操作系统上的完整的操作系统平台,而容器不是. 容器允许你以一种前所未有的方式扩展交付能力(不管内部还是外部的).例如,你可以快速部署多个 NGINX 实例(甚至可以应用于多个不同的阶

  • Linux下Docker安装配置教程

    在Linux上安装Docker,具体几个步骤: 环境:windows7 虚拟机:Oracle VMVirtualBox Linux: ubuntukylin-14.04.1-amd64.iso JDK:1.7 一.环境准备 step1:安装虚拟机 step2:修改宿主机BIOS配置,详细步骤见文章:http://www.jb51.net/article/96239.htm step3:在虚拟机上安装ubuntu系统.内存设置为4G,硬盘设置为100G,其余均按默认,一直点选下一步.直到系统安装成

  • Docker创建Mysql容器的简单步骤

    前言 前面我们已经安装好了Docker,也简单了解了Docker.下面就来给大家介绍下Docker创建Mysql容器的简单步骤,话不多说了,来一起看看详细的介绍吧 步骤如下 1.启动docker服务 [root@docker ~]# systemctl start docker 2.查看docker里面的镜像 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos/mysql-57-centos7 la

  • Linux下Docker安装和使用教程

    Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器. 开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal.OpenStack集群和其他的基础应用平台. Docker的源代码全部是用Go语言写的. 一.基础环境 1.角色.ip.版本.内核 serverA 10.1.10.236 3.16.0-4-amd64 8.1 docket docket 1.6.2 二.安装docter 1.添加源 echo "d

  • linux如何利用crontab添加定时任务详解

    前言 linux 系统是由 crond这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的. crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行. 我们可以看下crond这个系统服务的状态: 从这里可以看出来crond服务是自启动(enabled),且正在运行的(active) 另外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控

  • Linux定时删除日志的简单实现方法

    导语 linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情. 项目中会生成各种各样的日志,随着时间的推移,日志也是越来越多.超过一定时间的日志就没有了参考的价值,也会占用空间,所以一般的项目都会删除日志.本篇文章的需求是删除 7 天之前的日志,大致分为两步,一是删除日志的命令,二是设置定时任务. 删除指定时间的日志 首先是查找所有 7 天前的日志,使用 find 查找的时候加上 -mt

随机推荐