弗洛伊德认为:要解决这些苦恼,当事人就要通过回忆并理解自己早期的童年经历,来获得对潜意识冲突的顿悟。弗洛伊德的疗法被称为“精神分析” (psychoanalysis),在 20 世纪的很长一段时间被心理卫生从业者广为采用。 —— 《Change Your Thinking》

ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287

 #include <signal.h>
void (*signal(int signo, void (*func)(int)))(int);

为 signo 指定的信号设置信号处理程序。成功则返回指向之前信号处理程序的函数指针,出错则返回 SIG_ERR。

如果看不懂 signal 的函数声明,就要好好复习一下 c/c++ 的基础(函数指针)了。

将 signal 函数的声明简化一下:

 typedef void SigFunc(int); //信号处理函数原型
Sigfunc * signal(int signo, SigFunc * func);

简单示例:

 void sig_handler(int signo) {
if (SIGUSR1 == signo)
printf(“received SIGUSR1.”);
else
printf(“received signal %d.”, signo);
} int main() {
if (SIG_ERR == signal(SIGUSR1, sig_handler))
printf(“can’t catch SIGUSR1”); for ( ; ; )
pause();
}

还可将信号处理函数设置为 SIG_IGN (表示忽略此信号) 或 SIG_DFL (表示使用系统默认的信号处理程序)。

信号 SIGSTOP、SIGKILL 无法捕获或忽略。

记录以下两点,但没有验证,不确定是否表述正确:

  • 假设正在执行信号 A 的处理程序,此时来了另一个信号 B,则会转去执行 B 的信号处理程序,处理完毕之后,再接着执行 A 的信号处理程序。
  • 在进程中有一个软中断信号域,该域中每一位对应一个信号,当收到某一信号时,相应位会置位。所以,对于同一种信号,进程并不知道在处理之前已经收到过多少个。

除了 signal,还有 sigaction 函数可以设置信号处理函数,比 signal 要复杂些,后面接着再写笔记。

学习资料: 《unix 环境高级编程》

Linux 信号(二)—— signal 函数的更多相关文章

  1. Linux信号(signal) 机制分析

    Linux信号(signal) 机制分析 [摘要]本文分析了Linux内核对于信号的实现机制和应用层的相关处理.首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理.接着分析了内核 ...

  2. Linux 信号:signal 与 sigaction

    0.Linux下查看支持的信号列表: france@Ubuntux64:~$ kill -l ) SIGHUP ) SIGINT ) SIGQUIT ) SIGILL ) SIGTRAP ) SIGA ...

  3. Linux下利用signal函数处理ctrl+c等信号

    前言 linux下能够通过信号机制来实现程序的软中断,是一个很实用的编程方法. 我们平时在程序执行的时候按下ctrl-c.ctrl-z或者kill一个进程的时候事实上都等效于向这个进程发送了一个特定信 ...

  4. Linux信号(signal) 机制分析(转)

    [摘要]本文分析了Linux内核对于信号的实现机制和应用层的相关处理.首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理.接着分析了内核对于信号的处理流程包括信号的触发/注册/执 ...

  5. Linux信号(signal) 机制分析-(转自h13)

    [摘要]本文分析了Linux内核对于信号的实现机制和应用层的相关处理.首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理.接着分析了内核对于信号的处理流程包括信号的触发/注册/执 ...

  6. [学习笔记]信号基本概念(中断和信号)/名称及常用信号/信号处理/signal函数实践

    1基本概念 中断 q  中断是系统对于异步事件的响应 q  中断信号 q  中断源 q  现场信息 q  中断处理程序 q  中断向量表 异步事件的响应:进程执行代码的过程中可以随时被打断,然后去执行 ...

  7. 信号之signal函数

    UNIX系统的信号机制最简单的接口是signal函数.signal函数的功能:为指定的信号安装一个新的信号处理函数. #include <signal.h> void (*signal(i ...

  8. 非常好的一篇对linux信号(signal)的解析 (转载)【转】

    转自:https://blog.csdn.net/return_cc/article/details/78845346 Linux信号(signal) 机制分析 转载至:https://www.cnb ...

  9. Linux信号机制

    Linux信号(signal) 机制分析 [摘要]本文分析了Linux内核对于信号的实现机制和应用层的相关处理.首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理.接着分析了内核 ...

随机推荐

  1. QunInfo群数据库的还原与优化

    一. 背景 这个数据库的数据文件mdf大概有8.5G左右,当还原数据库之后感觉可以做很多性能方面上的调优,合并数据后mdf数据文件大概有6.2G左右,行压缩后mdf数据文件大概有4.8G左右,页压缩后 ...

  2. 【原】使用Bmob作为iOS后台开发心得——查询关联关系(BmobRelation)

    本文转载请注明出处 —— polobymulberry-博客园 简介 Bmob中的数据关联分为Pointer和Relation两种(数据关联在我开发app过程中使用还是很频繁的,也算个难点.虽然之前没 ...

  3. SQL Tuning 基础概述04 - Oracle 表的类型及介绍

    Tables A table describes an entity such as employees. You define a table with a table name, such as ...

  4. 现代3D图形编程学习-环境设置

    本书系列 现代3D图形编程学习 环境设置 由于本书中的例子,均是基于OpenGL实现的,因此你的工作环境需要能够运行OpenGL,为了读者能够更好的运行原文中的示例,此处简单地介绍了linux和win ...

  5. jQuery2.x源码解析(设计篇)

    jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 这一篇笔者主要以设计的角度探索jQuery的源代 ...

  6. Event Sourcing Pattern 事件源模式

    Use an append-only store to record the full series of events that describe actions taken on data in ...

  7. Java进击C#——应用开发之Asp.net MVC

    本章简言 上一章笔者讲到关于Asp.NET的知识点.了解Asp.NET基本的知识点之后,我们在来学习关于C#的MVC框架就简单多了.显然本章就是来介绍一下关于Asp.NET MVC.对于MVC的思想笔 ...

  8. WriteLog

    public class WriteLog     {         /// <summary>         /// 创建日志文件         /// </summary& ...

  9. VS资源编辑器常见错误RC1000到RC1208

    资源编译器错误RC1000到RC1208 以下主题包括资源编译器错误RC1000至RC1208: 资源编译器致命错误RC1000未知致命错误记下错误的情况下,尝试找出问题,并创建一个重现的测试案例,然 ...

  10. JSON转化为JAVABEAN集合

    String str = "[{'id':'392','type':'jpg'},{'id':'393','type':'jpg'},{'id':'377','type':'jpg'}]&q ...