signal

c++比例-libcurl多线程并发时的core【转载】

岁酱吖の 提交于 2019-11-28 19:50:20
转自: https://www.cnblogs.com/edgeyang/articles/3722035.html 浅析libcurl多线程安全问题 背景:使用多线程libcurl发送请求,在未设置超时或长超时的情况下程序运行良好。但只要设置了较短超时(小于180s),程序就会出现随机的coredump。并且栈里面找不到任何有用的信息。 问题:1.为什么未设置超时,或者长超时时间(比如601s)的情况下多线程libcurl不会core? 问题:2.进程coredump并不是必现,是否在libcurl内多线程同时修改了全局变量导致? 先来看下官方libcurl的说明: libcurl is free , thread-safe , IPv6 compatible , feature rich , well supported , fast , thoroughly documented and is already used by many known, big and successful companies and numerous applications . 可以看到官方自称licurl是线程安全的,是否真的如此?再来看看代码中用到的超时选项的说明: CURLOPT_TIMEOUT Pass a long as parameter containing the

Linux信号(signal) 机制分析

一个人想着一个人 提交于 2019-11-28 13:02:24
from: https://www.cnblogs.com/subo_peng/p/5325326.html 【摘要】本文分析了Linux内核对于信号的实现机制和应用层 的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行 及注销等。最后介绍了应用层的相关处理,主要包括信号处理函数的安装、信号的发送、屏蔽阻塞等,最后给了几个简单的应用实例。 【关键字】软中断信号,signal,sigaction,kill,sigqueue,settimer,sigmask,sigprocmask,sigset_t 1 信号本质 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。信号机制除了基本通知功能外,还可以传递附加信息。 收到信号的进程对各种信号有不同的处理方法。处理方法可以分为三类: 第一种是类似中断的处理程序,对于需要处理的信号

DBUS基础知识

℡╲_俬逩灬. 提交于 2019-11-28 12:26:49
1. 进程间使用D-Bus通信 D-Bus是一种高级的进程间通信机制,它由freedesktop.org项目提供,使用GPL许可证发行。D-Bus最主要的用途是在Linux桌面环境为进程提供通信,同时能将Linux桌面环境和Linux内核事件作为消息传递到进程。D-Bus的主要概率为总线,注册后的进程可通过总线接收或传递消息,进程也可注册后等待内核事件响应,例如等待网络状态的转变或者计算机发出关机指令。目前,D-Bus已被大多数Linux发行版所采用,开发者可使用D-Bus实现各种复杂的进程间通信任务。 2. D-Bus的基本概念 D-Bus是一个消息总线系统,其功能已涵盖进程间通信的所有需求,并具备一些特殊的用途。D-Bus是三层架构的进程间通信系统,其中包括: 接口层:接口层由函数库libdbus提供,进程可通过该库使用D-Bus的能力。 总线层:总线层实际上是由D-Bus总线守护进程提供的。它在Linux系统启动时运行,负责进程间的消息路由和传递,其中包括Linux内核和Linux桌面环境的消息传递。 包装层:包装层一系列基于特定应用程序框架的Wrapper库。 D-Bus具备自身的协议,协议基于二进制数据设计,与数据结构和编码方式无关。该协议无需对数据进行序列化,保证了信息传递的高效性。无论是libdbus,还是D-Bus总线守护进程,均不需要太大的系统开销。 总线是D

linux信号(signal)

扶醉桌前 提交于 2019-11-28 08:10:40
一、signal本质 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟。 二、signal各种类型 处理动作一项中的字母含义如下 A 缺省的动作是终止进程 B 缺省的动作是忽略此信号 C 缺省的动作是终止进程并进行内核映像转储(dump core) D 缺省的动作是停止进程 E 信号不能被捕获 F 信号不能被忽略 POSIX.1中列出的信号: 信号 值 处理动作 发出信号的原因 ---------------------------------------------------------------------- SIGHUP 1 A 终端挂起或者控制进程终止 SIGINT 2 A 键盘中断(如break键被按下) SIGQUIT 3 C 键盘的退出键被按下 SIGILL 4 C 非法指令 SIGABRT 6 C 由abort(3)发出的退出指令 SIGFPE 8 C 浮点异常 SIGKILL 9 AEF Kill信号 SIGSEGV 11 C 无效的内存引用 SIGPIPE 13 A 管道破裂: 写一个没有读端口的管道 SIGALRM 14 A 由alarm(2)发出的信号 SIGTERM 15 A 终止信号 SIGUSR1 30,10,16 A 用户自定义信号1 SIGUSR2 31,12,17 A 用户自定义信号2

守护进程

自古美人都是妖i 提交于 2019-11-28 07:28:40
#include <unistd.h> #include <stdio.h>#define RUNNING_DIR /tmp int main(){ pid_t pid; pid=fork(); if(pid!=0)exit(0); // 如果创建失败或者为父进程则退出 printf("Running..."); setsid(); // obtain a new process grop for(int i=gettabsize();i>=0;i--){close(i);} i=open("/dev/null",O_RDWR); dup(i); dup(i); umask(027); chdir(RUNNING_DIR); signal(SIGCHLD,SIG_IGN); signal(SIGTSTP,SIG_IGN); signal(SIGTTOU,SIG_IGN); signal(SIGTTIN,SIG_IGN); signal(SIGHUP,HelperDaemon::signalHandler); // hangup signal(SIGTERM,HelperDaemon::signalHandler); // kill while(1); return 0; } 来源: https://www.cnblogs.com/abnk/p/11399080.html

An Introduction to Delta Sigma Converters (Delta-Sigma转换器 上篇)

流过昼夜 提交于 2019-11-28 02:34:27
http://hi.baidu.com/hieda/blog/item/7668eddd0a92c7305882dd43.html When looking for an introduction to delta sigma conversion I found that most explanations were from a very theoretical point of view. It took me a while to understand how Delta Sigma converters really work. So I decided to write this introduction for people who prefer circuit diagrams to reading abstract equations. To understand what I'm talking about you should at least be familiar with: - Standard analogue techniques (op-amps, comparators etc.) - Standard digital techniques (latches, binary codes etc.) - Standard ADCs and DACs

An Introduction to Delta Sigma Converters (Delta-Sigma转换器 下篇)

℡╲_俬逩灬. 提交于 2019-11-28 02:33:58
http://hi.baidu.com/hieda/blog/item/1148098defa05316b21bba4c.html Decimation I did not mention the term "decimation" yet at all because it is neither a process nor is it mystic - it's trivial. It is required when a bitstream, e.g. the output of an analogue modulator, shall be converted to a PCM signal. The core statement is: Without losing any information in oversampled signals as many samples can be left out until the signal is not oversampled any more . (That's why it is called "oversampled"!) Figure 11 - Delta Sigma based ADC with PCM Output Decimation takes place in delta sigma converters

signal(SIGHUP, SIG_IGN)的含义

我的未来我决定 提交于 2019-11-27 22:15:22
signal(SIGHUP, SIG_IGN); signal信号函数,第一个参数表示需要处理的信号值(SIGHUP),第二个参数为处理函数或者是一个表示,这里,SIG_IGN表示忽略SIGHUP那个注册的信号。 SIGHUP和控制台操作有关,当控制台被关闭时系统会向拥有控制台sessionID的所有进程发送HUP信号,默认HUP信号的action是 exit,如果远程登陆启动某个服务进程并在程序运行时关闭连接的话会导致服务进程退出,所以一般服务进程都会用nohup工具启动或写成一个 daemon。 转载于:https://www.cnblogs.com/jasonliu/archive/2012/01/19/2326179.html 来源: https://blog.csdn.net/weixin_30591551/article/details/99768676

joinquant 策略

旧城冷巷雨未停 提交于 2019-11-26 15:47: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'

个人学习计划

倖福魔咒の 提交于 2019-11-26 09:10:36
1.windows CE -windows mobile ,feture i will study Linux embedded ,google android 2.G3 networking (wcdma ,cdma2000 ,Td-scdma) G4 and G5 [ss7 call signal sms signal voip ] 3.Oma[ota pim wifi bt mms synml wap siml drm] 4.some basic information about tcpip sniffer server[smtp pop3 imap4 streaming ardius sip http ],amd i know that i have study it for four years in school. so , it will take me 1.5~2 years to study. 我已经获得了网络工程师和系统分析师的认证,我希望在2年后 获得 华为的hcse或是cisco的ccnp ,如果我要转行的话,我想还要拿到ccie的证书。 呵呵 ,远了 。。。。。。路在脚下。 转载于:https://www.cnblogs.com/jason0085/archive/2009/04/17/1438327.html 来源: https://blog.csdn