signal

Linux 的各种 signal

匿名 (未验证) 提交于 2019-12-02 21:59:42
程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程。 和SIGINT类似, 但由QUIT字符(通常是Ctrl-\)来控制. 进程在因收到SIGQUIT退出时会产生core文件, 在这个意义上类似于一个程序错误信号。 执行了非法指令. 通常是因为可执行文件本身出现错误, 或者试图执行数据段. 堆栈溢出时也有可能产生这个信号。 由断点指令或其它trap指令产生. 由debugger使用。 调用abort函数生成的信号。 非法地址, 包括内存地址对齐(alignment)出错。比如访问一个四个字长的整数, 但其地址不是4的倍数。它与SIGSEGV的区别在于后者是由于对合法存储地址的非法访问触发的(如访问不属于自己存储空间或只读存储空间)。 在发生致命的算术运算错误时发出. 不仅包括浮点运算错误, 还包括溢出及除数为0等其它所有的算术的错误。 用来立即结束程序的运行. 本信号不能被阻塞、处理和忽略。如果管理员发现某个进程终止不了,可尝试发送这个信号。 留给用户使用 留给用户使用 管道破裂。这个信号通常在进程间通信产生,比如采用FIFO(管道)通信的两个进程,读管道没打开或者意外终止就往管道写,写进程会收到SIGPIPE信号。此外用Socket通信的两个进程,写进程在写Socket的时候,读进程已经终止。 时钟定时信号,

Qt简单项目实例之(二)——多功能计算器

倾然丶 夕夏残阳落幕 提交于 2019-12-02 06:47:21
有问题可以加我QQ:2273864757 进行交流学习!!!! 一.简单介绍 整个计算器设计整体按照“插件式,微内核”进行开发,里面包含各个功能的插件,将这些插件集成到我们的主工程之上。 首先,展示相关的功能截图: 此计算器包含基本的加减乘除运算之外,还包含有大整数计算工具,线代计算工具,多项式求解等计算工具,可以在工具下拉菜单里进行选择: 管理器可以记录我们输入的历史记录,常规菜单可以对整个界面的语言和背景颜色等等进行设置: 二.具体实现步骤 2.1 整体界面设置 整体界面设置通过读取配置文件进行整体界面的搭建,属性设置也通过保存到配置文件中进行存储,方便下次打开后使用上次保存的具体信息: void Calculator::readSettings() { QSettings settings; //The QSettings constructor takes arguments that identify your company and the name of the product. //This ensures that the settings for different applications are kept separately. //调整窗口的位置 QPoint pos = settings.value("pos", QPoint(350, 200))

python学习笔记——多进程间通信——Linux信号基础

a 夏天 提交于 2019-12-02 00:16:58
python学习笔记——信号模块signal 阅读目录(Content) 1 signal基本信号名 2 常用信号处理函数 2.1 设置发送SIGALRM信号的定时器 2.2 设置信号处理函数 3 常用信号处理函数 基于 python学习笔记——多进程间通信——Linux信号基础 的学习基础,进一步学习Python标准库中的signal模块。 尽管signal是python中的模块,但是主要针对UNIX平台(比如Linux,MAC OS),而Windows内核中由于对信号机制的支持不充分,所以在Windows上的Python不能发挥信号系统的功能。 signal模块负责python程序内部的信号处理;典型的操作包括信号处理函数、暂停并等待信号,以及定时发出SIGALRM等; 1 signal基本信号名 import signal signal.SIGHUP # 连接挂断; signal.SIGILL # 非法指令; signal.SIGINT # 终止进程(ctrl+c); signal.SIGTSTP # 暂停进程(ctrl+z); signal.SIGKILL # 杀死进程(此信号不能被捕获或忽略); signal.SIGQUIT # 终端退出; signal.SIGTERM # 终止信号,软件终止信号; signal.SIGALRM # 闹钟信号,由signal.alarm(

ReactiveCocoa & MVVM 学习总结一

▼魔方 西西 提交于 2019-12-01 16:57:08
主要是为了总结学习RAC的过程中,遇到的一些困惑点,一些阅读的参考资料,文笔也不是很好。建议大家学习RAC参考文章: https://github.com/ReactiveCocoa/ReactiveCocoa/tree/master/Documentation 以及花瓣工程师的一篇很棒的文章: http://limboy.me/ios/2014/06/06/deep-into-reactivecocoa2.html 把自己的学习心得写了一个小demo,放在了github上面,欢迎一起学习交流: https://github.com/lihei12345/RACNetwokDemo ===================================================================== 一. ReactiveCocoa monad术语: “It’s a specific way of chaining operations together. ” , http://stackoverflow.com/questions/44965/what-is-a-monad 1. RACSignal / RACSequence: RACSignal与RACSequence是可以相互转换的。RACSignal是push-driven的

Test command -signal Evaluation

房东的猫 提交于 2019-12-01 13:36:46
今天来解析一下xml格式的Test command。 话说第一个疑问, Test Automation Editor是可以编辑xml格式的test moudle。但是这个玩意儿不知哪里下载。上了vector公司的网页也没搜到。。   首先是这个Structuring Elements(结构元素):   里面包含 Test Module、Test Group、Test Case、Test case Template、Test Case Instance   这个好像没啥好讲的。就是一些结构元素。。 接下来是Test service Library(测试服务库)checks(检查)   第一个<novaluechange> <novaluechange title="Title of check"> // CAN signal, LIN signal, FlexRay signal, environment variable or system variable </novaluechange>      这个检查可以用来检查signal,环境或系统变量是否发生了变化。当发生了变换会导致check 失败。   接下来是<signal_cycletime_abs>,用于检查一个特定的CAN 信号的绝对周期时间。min和max是必须设置的 <signal_cycletime_abs

signal()函数

不打扰是莪最后的温柔 提交于 2019-11-30 09:48:14
函数原型 void (*signal(int sig,void(*func)(int)))(int); 指定使用sig指定的信号编号处理信号的方法。参数func指定程序可以处理信号的三种方式之一: l 默认处理(SIG_DFL): 信号由该特定信号的默认动作处理 l 忽略信号(SIG_IGN): 忽略信号,即使没有意义,代码执行仍然继续。 l 函数处理程序: 定义一个特定的函数来处理信号。 或SIG_DFL要么SIG_IGN被设置为程序启动时每个支持信号的默认信号处理行为。 参数: SIG设置处理功能的信号值,以下宏常量表达式标识标准信号值: 宏 信号 SIGABRT (信号终止)异常终止,例如由…发起的退出功能 SIGFPE (信号浮点异常)错误的算术运算,比如零分频或导致溢出的运算(不一定是浮点运算) SIGILL (信号非法指令)无效的功能图像,例如非法指令。这通常是由于代码中的损坏或尝试执行数据 SIGINT (信号中断)交互式注意信号。通常由应用程序用户生成 SIGSEGV (信号分段违规)对存储的无效访问:当程序试图在已分配的内存之外读取或写入时。 SIGTERM (信号终止)发送到程序的终止请求。 每个库实现可以提供可以与此函数一起使用的附加信号值宏常量。 注意:并不是所有的运行环境都需要生成自动信号,即使在上述特定情况下也是如此

process signal

青春壹個敷衍的年華 提交于 2019-11-30 02:45:55
some Unix process signals: 1, HUP, "hangup"; the controlling terminal disconnected, or the controlling process died. 2, INT, "interrupt"; the user typed CTRL+C. 9, KILL, "kill"; terminate immediately, no cleanup. Can't be trapped. 15, TERM, "terminate," but cleanup first. May be trapped. The default when using the kill command. 来源: https://my.oschina.net/redhands/blog/3107883

C 轻量级 信号与槽

半城伤御伤魂 提交于 2019-11-29 19:14:28
#ifndef _SIMPLE_SIGNAL_SOLTS_H_ #define _SIMPLE_SIGNAL_SOLTS_H_ #include "string.h" typedef void (*SIMPLE_SIGNAL)(void *signal, void *pArg); typedef void (*SIMPLE_SOLTS) (void *pArg); #define SIMPLE_SOLTS_T(FuncName) void(FuncName)(void *pArg) #define SIMPLE_EMIT(signal, arg) if (signal != NULL)signal(&signal, arg) #define SIMPLE_SIGNAL_SOLTS_MAX_SOLTS 10 //一个信号最多连接槽的数量 #define SIMPLE_SIGNAL_SOLTS_MAX_SIGNAL 10 //信号最多数量 ErrorStatus SimpleSignalSolts_Connect(SIMPLE_SIGNAL *signal, SIMPLE_SOLTS solts); #endif 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /*****************************************

QT中 QObject::sender():

巧了我就是萌 提交于 2019-11-29 13:15:28
QT中 QObject::sender(): 1、功能:用于返回发送信号的对象的指针,返回类型为QObject *。当某一个Object emit一个signal的时候,它就是一个sender, 系统会记录下当前是谁emit出这个signal的。你在一个槽里面调用这个函数,就知道是谁触发了这个槽并且可对发信号的对象进行操作。 2、可以解决的问题:可用于一个槽函数接收多个信号,通过sender判断是哪个对象发的信号。 示例代码: ///假如有button1和button2同时连接到该槽 void Widget::Slot_On_Clicked() { QObject * obj = sender(); //返回发出信号的对象,用QObject类型接收 QPushButton *button_tmp = qobject_cast<QPushButton *>(obj); //向下转型为按钮类型 //或者 QPushButton *button_tmp = (QPushButton*) sender(); //强制转换 QString m_ObjectName = button_tmp->text(); //调用发信号者的方法 ///判断是哪个按钮 if(m_ObjectName.compare(QStringLiteral("pushButton_1"))==0) { qDebug()

进程间通信

Deadly 提交于 2019-11-28 21:54:45
进程间通信 文章目录 进程间通信 1 概述 2 管道 2.1 概述 2.2 管道系统调用 2.3 标准流管道 3 FIFO 3.1 概述 3.2 mkfifo函数 4 信号 4.1 概述 4.2 信号发送与捕捉 4.3 信号的处理 4.4 信号集函数组 5 信号量 5.1 概述 5.2 信号量的应用 6 共享内存 6.1 概述 6.2 共享内存的应用 7 消息队列 7.1 概述 7.2 应用 进程捕捉到信号并对其进行处理时,正在执行的指令序列被信号处理程序临时中断,先执行信号处理程序中的指令,若从信号处理程序返回,则继续执行捕捉到信号时正在执行的指令序列。但在信号处理程序中,不能判断捕捉到信号时进程执行到何处,故信号处理程序中应保证调用安全的函数(是可重入的并是异步信号安全的)。若在信号处理程序中调用不可重入函数,其结果是不可预测的。 不可重入信号: (1)使用静态数据结构。 (2)调用malloc或free。 (3)是标准I/O函数。 1 概述 进程间通信(InterProcess Communication, IPC)方式主要有以下几种: 管道 (Pipe)及 有名管道 (named pipe):管道可用于具有亲缘关系进程间的通信,有名管道具有管道所具有的功能且允许无亲缘关系进程间的通信。 信号 (Signal):信号是在软件层次上对中断机制的一种模拟,用于通知进程有某事件发生