前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识 | 每日一练(164)

基础知识 | 每日一练(164)

作者头像
小林C语言
发布2019-11-12 22:16:01
2790
发布2019-11-12 22:16:01
举报

基础知识练习

士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ——菜根谭

读者:怎样抓获或忽略像 control-C 这样的键盘中断?

小林:基本步骤是调用 signal():

#include <signal.h>

singal(SIGINT, SIG_IGN);

就可以忽略中断信号, 或者:

extern void func(int);

signal(SIGINT, func);

使程序在收到中断信号时, 调用函数 func()。

在多任务系统下 (例如 Unix), 最好使用更加深入的技巧:

extern void func(int);

if(signal(SIGINT, SIG_IGN) != SIG_IGN)

signal(SIGINT, func);

这个测试和额外的调用可以保证前台的键盘中断不会因疏忽而中断了在后台运行的进程, 在所有的系统中都用这种调用 signal 的方法并不会带来负作用。在某些系统中, 键盘中断处理也是终端输入系统模式的功能。在某些系统中, 程序只有在读入输入时, 才查看键盘中断, 因此键盘中断处理就依赖于调用的输入例程 (以及输入例程是否有效)。在 MS-DOS 下, 可以使用setcbrk() 或 ctrlbrk()。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档