文档章节

漂亮的信号捕捉

东湖畔新家
 东湖畔新家
发布于 2017/05/09 18:53
字数 114
阅读 0
收藏 0

#include <unistd.h>;
#include <signal.h>;
#include <stdlib.h>;
#include <setjmp.h>; 
#include <sys/signal.h>; 

static jmp_buf jmpbuf; 

void int_proc(int sig) {         
  siglongjmp(jmpbuf, 1); 
} 

int main() { 
  int c, i; 

        int m;
        m=sigsetjmp(jmpbuf,1);
  if (m==1) printf("\nInterrupt\n";
  else if(m==2) printf("\ninvalid input\n"; 

  signal(SIGINT, int_proc); 
  printf("Choose task a or b:"; 
  c = getchar();
  while(getchar()!='\n')
          continue; 
  printf("you select\n";          

  switch (c) { 
     case 'a': 
        for (i = 0; i < 10; i++) { 
           printf("..%3d%%", (i+1)*10); 
           sleep(2); 
        } 
        break; 
     case 'b': 
        for (i = 0; i < 10; i++) { 
           printf("..%3d%%", (i+1)*10); 
           sleep(1); 
        } 
        break; 
     default: 
        siglongjmp(jmpbuf, 2); 
  } 
  printf("End task\n"; 
}

本文转载自:http://blog.csdn.net/sblig/article/details/24669753

东湖畔新家
粉丝 1
博文 170
码字总数 31582
作品 0
杭州
后端工程师
私信 提问
linux C 信号 使用

一直想在C语言中使用像python和C++中的try那样的语句,使程序在出错的时候能不崩溃。通过对linux的信号的编程可以大致实现这个机制。不过还是不好很用的说。 使用到的函数, signal(), sigse...

kangxin1234
2016/07/01
31
0
shell中trap捕捉到信号的处理

一. trap捕捉到信号之后,可以有三种反应方式: (1)执行一段程序来处理这一信号 (2)接受信号的默认操作 (3)忽视这一信号 二. trap对上面三种方式提供了三种基本形式: 第一种形式的trap命令在...

最新更新消息
2015/10/01
134
0
shell 脚本编程之信号捕捉和主机探测

shell 脚本编程之信号捕捉和主机探测 =============================================================================== 概述: ======================================================......

逐梦小涛
2017/03/03
0
0
Linux进程间通信(四)---信号通信之信号发送捕捉kill()、raise()、alarm()、pause()及其基础实验

信号概述 ● 信号是在软件层次上对中断机制的一种模拟。在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。 ● 信号是异步的,一个进程不必通过任何操作来等待信号的到...

长平狐
2013/06/17
562
0
Unix环境高级编程笔记 :10、信号

信号是软件中断,信号提供了一种处理异步事件的方法。 1、信号概念 每个信号都有一个名字,这些名字都以三个字符SIG开头。 SIGABRT是夭折信号,当进程调用abort函数时产生这种信号 SIGALRM是...

活的很快乐
2013/11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ubuntu或ubuntu kylin优麒麟中安装QQ、wechat微信、百度网盘

从中国国内的地址下载deepin wine,码云上的。这样网速比较快。然后,按照说明向下安装。 https://gitee.com/wszqkzqk/deepin-wine-for-ubuntu...

gugudu
34分钟前
2
0
基于redis分布式锁实现“秒杀”

最近在项目中遇到了类似“秒杀”的业务场景,在本篇博客中,我将用一个非常简单的demo,阐述实现所谓“秒杀”的基本思路。 业务场景 所谓秒杀,从业务角度看,是短时间内多个用户“争抢”资源...

别打我会飞
54分钟前
14
0
Zookeeper的实践指南

本章重点 1.数据存储2.基于Java API初探Zookeeper的使用3.深入分析Watcher机制的实现原理4.Curator客户端的使用,简单高效 数据存储 事务日志快照日志运行时日志 bin/zookeepe...

须臾之余
58分钟前
2
0
MySQL mybatis Point类型数据

MySQL中的point用于表示GIS中的地理坐标,在GIS中广泛使用 如何写入mysql,如下图: CREATE TABLE `test-point` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号', `point` ......

张欢19933
今天
3
0
设计模式-适配器模式

适配器模式 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入...

HOT_POT
今天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部