signal

015_linux驱动之_signal

前提是你 提交于 2019-12-26 11:42:09
首先看应用程序 首先分析第二点使用函数signal(SIGIO, my_signal_fun);来设置,当驱动程序传递信号给应用程序时候会调用第一点的程序 第三点是设置相关参数 (二)当应用程序调用到底三点时候,就会在驱动程序中调用到第一点 上面的驱动程序初始化了信号的相关参数,然后我们再驱动程序中调用 上面的这一条就可以将信号发送给应用程序了,应用程序中就会调用图片中的第一点 来源: CSDN 作者: 陆小果哥哥 链接: https://blog.csdn.net/xiaoguoge11/article/details/103708634

Django signal 信号机制的使用

别来无恙 提交于 2019-12-24 18:14:41
Django中提供了"信号调度",用于在框架执行操作时解耦,当某些动作发生的时候,系统会根据信号定义的函数执行相应的操作 一.Django中内置的 signal 类型主要包含以下几种 1.Model_signals pre_init # Django中的model对象执行其构造方法前,自动触发 post_init # Django中的model对象执行其构造方法后,自动触发 pre_save # Django中的model对象保存前,自动触发 post_save # Django中的model对象保存后,自动触发 pre_delete # Django中的model对象删除前,自动触发 post_delete # Django中的model对象删除后,自动触发 m2m_changed # Django中的model对象使用m2m字段操作数据库的第三张表(add,remove,clear,update),自动触发 class_prepared # 程序启动时,检测到已注册的model类,对于每一个类,自动触发 2.Managemeng_signals pre_migrate # 执行migrate命令前,自动触发 post_migrate # 执行migrate命令后,自动触发 3.Request/response_signals request_started # 请求到来前

joinquant 策略

邮差的信 提交于 2019-12-24 11:46:28
代码 # 克隆自聚宽文章:https://www.joinquant.com/post/20590 # 标题:ETF单均线跟踪轮动 # 作者:那時花開海布裡 ''' ================================================= 总体回测前设置参数和回测 ================================================= ''' def initialize(context): set_params() #1设置策参数 set_variables() #2设置中间变量 set_backtest() #3设置回测条件 #1 设置参数 def set_params(): # 设置基准收益 set_benchmark('000300.XSHG') g.lag = 13 g.hour = 14 g.minute = 25 g.hs = '000300.XSHG' #300指数 g.zz = '399006.XSHE'#创业板指数 g.sz = '000016.XSHG' #50指数 g.ETF300 = '000300.XSHG'#'300指数 g.ETF500 = '399006.XSHE'#'300指数 g.ETF50 = '000016.XSHG' #50指数 g.ETFrili = '511880.XSHG'

nginx master工作循环

微笑、不失礼 提交于 2019-12-24 06:49:11
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 默认情况下,nginx使用的是master-worker工作模式接收命令行指令和处理客户端请求。在nginx启动master进程后,其会进行整个nginx工作环境的初始化,然后会依次启动worker进程、cache manager和cache loader进程,接着会进入一个工作循环中,以等待命令行发送来的指令,从而实现对nginx的管理工作。本文主要讲解nginx是如何进行信号的初始化和处理的。 1. 信号处理方法 在介绍nginx是如何组织信号之前,我们首先需要理解的是对信号进行管理的几个主要的方法: 方法 参数 作用 sigaction(int signo, conststruct *act, struct sigaction * oldact); signo指定了当前需要监听的信号类型;act指定了处理当前信号的方法;oldact将接收原先设置的处理信号的方法; 对于signo指定的信号,为其设置接收到该信号时的处理方法 sigemptyset(sigset_t *set) set中存储了当前进程正在监听的信号集 将指定信号集中的信号清空 sigaddset(sigset_t *set, int signo) set为目标信号集;signo为将要添加的信号 将指定信号添加到目标信号集中

进程信号

天大地大妈咪最大 提交于 2019-12-23 18:33:19
以下是阿鲤对Linux下进程信号的总结,希望对大家有所帮助;若有误请慷慨指出。 在生活中我们处处离不开信号,很多东西都需要有信号来给我们传达信息。当我们听到上栗铃声我们就知道要上课了;当我们看到有人向我们挥手我们就知道他再向你打招呼;以上这些这些都是生活中信号的体现。那么什么是进程间信号呢? 1:信号概念 2:信号的种类 3:信号的产生 4:信号在进程中的注册和注销 5:信号的捕捉处理 6:信号的阻塞 7:函数的可重入与不可重入 8:volatile关键字 9:SIGCHLD信号 注:以下的代码实现均为centos7环境; 一:进程信号概念: 1:什么是进程信号 进程信号是一个软件中断,通知程序发生了某个事件,打断进程当前的操作,去处理这件事。 2:进程信号的特点 1:信号是多种多样的,每一个信号对应一个事件 2:所能识别的信号必须是合理的 二:信号的种类 1:查看信号的种类 :使用kill -l命令 我们可以看到上面有62种信号(32 33 不存在),其中前31种信号是借鉴unix而来的是,每一个均对应一个操作;而后面的信号是面向用户的,并没有对应的事件,所以没有真正的命名。 所以有一个分类,1-31为非可靠信号;34-64是可靠信号。 三:信号的产生 1:软件产生: 1:kill命令:kill+signal number pid 2:int kill(pid_t pid,

19 Signals and Signal Handling

佐手、 提交于 2019-12-23 00:16:39
1 What are signals and how are they used 1.当进程接收到信号,进程会暂停,来处理信号 1.1 How we use signals 1. killall cat 杀死所有的cat程序 2.信号源与信号 信号源 信号 kill SIGTERM Ctrl-c SIGINT Ctrl-z SIGTSTP fg SIGCONT 2 The Wide World of Signals Signal Value Action Comment SIGHUP 1 Term Hangup detected on controlling terminal or death of controlling process SIGINT 2 Term Interrupt from keyboard SIGQUIT 3 Core Quit from keyboard SIGILL 4 Core Illegal Instruction SIGABRT 6 Core Abort signal from abort(3) SIGFPE 8 Core Floating point exception SIGKILL 9 Term Kill signal SIGSEGV 11 Core Invalid memory reference SIGPIPE 13 Term

QT信号槽机制

痞子三分冷 提交于 2019-12-20 18:04:43
信号槽 信号槽是QT中用于对象间通信的一种机制,也是QT的核心机制。在GUI编程中,我们经常需要在改变一个组件的同时,通知另一个组件做出响应。例如: 一开始我们的Find按钮是未激活的,用户输入要查找的内容后,查找按钮就被激活,这就是输入框与Find按钮这两个组件间通信的例子。 早期,对象间的通信采用回调来实现。回调实际上是利用函数指针来实现,当我们希望某件事发生时处理函数能够获得通知,就需要将回调函数的指针传递给处理函数,这样处理函数就会在合适的时候调用回调函数。回调有两个明显的缺点: 它们不是类型安全的,我们无法保证处理函数传递给回调函数的参数都是正确的。 回调函数和处理函数紧密耦合,源于处理函数必须知道哪一个函数被回调。 信号与槽 在QT中,我们有回调技术之外的选择,也即是信号槽机制。所谓的信号与槽,其实都是函数。当特定事件被触发时(如在输入框输入了字符)将发送一个信号,而与该信号建立的连接槽,则可以接收到该信号并做出反应(激活Find按钮)。 QT组件预定义了很多信号和槽,而在GUI编程中,我们习惯于继承那些组件,继承后添加我们自己的槽,以便以我们的方式来处理信号。槽和普通的C++成员函数几乎是一样的,它可以是虚函数,可以被重载,可以是共有、私有或是保护的,也同样可以被其他成员函数调用。它的函数参数也可以是任意类型的。唯一不同的是:槽还可以和信号连接在一起。 与回调不同

DBUS服务器端程序

有些话、适合烂在心里 提交于 2019-12-19 19:51:22
DBus 服务器端接收方式 DBus 服务器端用来接收signal和method调用。从收集的资料中发现,主要有三种接收方式。 一,采用while循环,监听dbus_connection_read_write()函数。有消息到来时在循环内部进行处理。优点是结构简单,处理方便。程序结构如下图。 /* test.signal.server(bus name) | ----test.signal.Type(interface1) | | | ----FunctionOne(method1) | | | ----FunctionTwo(method2) ----org.freedesktop.DBus.Introspectable(interface3) | | | ----Introspect(method3) response to interface(test.signal.Type) signal(Test) response to interface(test.signal.Type2) signal(TestString) response to interface(test.signal.Type) signal(MulType) */ #include <iostream> #include <stdlib.h> #include <dbus/dbus.h>

022 UNIX再学习 -- 信号处理

纵饮孤独 提交于 2019-12-19 02:15:07
一、闹钟和睡眠 1、函数 alarm # include <unistd.h> unsigned int alarm ( unsigned int seconds) ; 返回值:返回 0 或先前所设闹钟的剩余秒数 (1)函数功能 使用 alarm 函数可以设置一个定时器 (闹钟时间) ,在将来的某个时刻该定时器会超时。当定时器超时时,产生 SIGALRM 信号 。如果忽略或不捕捉此信号,则其默认动作是终止调用该 alarm 函数的进程。 (2)参数解析 参数 seconds 的值是产生信号 SIGALRM 需要经过的时钟秒数。 当这个时刻到达时,信号由内核产生,由于进程调度的延迟,所以进程得到控制从而能够处理该信号还需要一个时间间隔。 (3)函数解析 每个进程只能有一个闹钟时间。 如果在调用 alarm 时,之前已为该进程注册的闹钟时间还没有超时,则该闹钟时间的余值作为本次 alarm 函数调用的值返回。以前注册的闹钟时间则被新值代替。 如果有以前注册的尚未超过的闹钟时间,而且 本次调用的 seconds 值是 0,则取消以前的闹钟时间 ,其余留值仍作为 alarm 函数的返回值。 虽然 SIGALRM 的默认动作是终止进程,但是大多数使用闹钟的进程捕捉此信号。 如果此时进程要终止,则在终止之前它可以执行所需的清理操作。如果我们想捕捉 SIGALRM 信号,则必须在调用 alarm

qt quick中qml编程语言

跟風遠走 提交于 2019-12-18 04:52:09
Qt QML 入门 — 使用C++定义QML类型 发表于 2013 年 3 月 11 日 注册C++类 注册可实例化的类型 注册不实例化的QML类型 附带属性 注册C++类 注册可实例化的类型 如果一个C++类继承自QObject,如果需要在QML中使用创建对象,则需要注册为可实例化的QML类型。 使用 qmlRegisterType() 注册可实例化的QML类型,具体查看qmlRegisterType()的文档说明。 //Message.cpp class Message : public QObject { Q_OBJECT Q_PROPERTY(QString author READ author WRITE setAuthor NOTIFY authorChanged) Q_PROPERTY(QDateTime creationDate READ creationDate WRITE setCreationDate NOTIFY creationDateChanged) public: // ... }; //main.cpp #include <QtQml> ... qmlRegisterType<Message>("com.mycompany.messaging", 1, 0, "Message"); ... //aQmlFile.qml import com