不要相信 errno 可靠
最近发现第3方提供的 API, 引起内存不断增大,代码如下:
int retVal = kill(pSharedData->regBuffPids[i],0);if (retVal == 0){LOGE("Signal Sent Successfully....");return false;}else{LOGE("Kill failed....");}if (errno == EPERM){LOGE("signal permission failure!");return false;}else if (errno == EINVAL){LOGE("invalide signal");return false;}else if (errno == ESRCH){LOGE("no process found for the specific pid");release_share_memory();}
它用 kill(pid,0) 检查进程是否存在,不存在,就释放共享内存。
但其实我们发现运行 LOGE() , errno 期望是3, 但却变成 2 ,原来我们自己改动过的 LOGE() 中调用了 localtime, 它读不到时区文件,所以把 errno 设置成 2
因此不要相信 errno 可靠, 有必要先用临时变量保存。
int retVal = kill(pSharedData->regBuffPids[i],0);int errnoVal = errno;if (retVal == 0){LOGE("Signal Sent Successfully....");return false;}else{LOGE("Kill failed....");}if (errnoVal == EPERM){LOGE("signal permission failure!");return false;}else if (errnoVal == EINVAL){LOGE("invalide signal");return false;}else if (errnoVal == ESRCH){LOGE("no process found for the specific pid");release_share_memory();}
不要相信 errno 可靠相关推荐
- 昇腾 OSError: [Errno 22] Invalid argument: ‘protocol‘
OSError: [Errno 22] Invalid argument: 'protocol' 改为这样不报错,但是报别的错: def __init__(self, family=-1, type= ...
- 【B站视频笔记】linux 进程间通信(ipc)信号(软中断信号)signal库函数、可靠信号和不可靠信号、信号集sigprocmask(信号掩码、信号递达Delivery、信号未决Pending)
[视频教程]Linux信号详解(可靠信号.不可靠信号.阻塞信号.信号处理函数) [博文]Linux信号 文章目录 背景 课程笔记 一.如何让程序在后台运行 1.加"&"符号 ...
- linux之errno值为104(connetction reset by peer)
1 问题 往fd里面写(write方法)入数据的时候出错,返回小于等于0的值,然后这个时候打印errno值是104 2 分析 errno是104就是connetction reset by peer, ...
- 网络:TCP维护安全可靠机制提供的定时器
一.TCP为维护安全可靠机制提供了七大定时器 1.连接建立(connectionestablishment)"定时器: 在发送SYN报文段建立一条新连接时启动.如果在75秒内没有收到响应,连 ...
- php获得可靠的精准的当前时间 ( 通过授时服务器 )
关联:php获取当地时间 time zone 有一种情形是这样子的,比如机票业务中的订票流程,我们需要一个非常可靠的当前时间来支持,尽管大多数服务器的时间是非常准确的,我们使用time()来获取的时间 ...
- 可靠信号与不可靠信号
来自:http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html 一.信号及信号来源 信号本质 信号是软件中断,是在软件层次上 ...
- 如何验证Linux Signal可靠信号与不可靠信号
前面章节已经<Linux下的Signal信号处理及详解>说了,Linux 下的信号分为可靠信号和不可靠信号,或称为实时信号和非实时信号,信号是从1开始编号的,不存在0号信号.0信号用来测试 ...
- Could not install packages due to an EnvironmentError: [Errno 28] No space left on device
Could not install packages due to an EnvironmentError: [Errno 28] No space left on device 1. 问题现象 安装 ...
- linux下yum错误:[Errno 14] problem making ssl connection Trying other mirror.
所有的base 都要取消注释 mirrorlist 加上注释 另外所有的enable都要设为零 目录 今天是要yum命令安装EPEL仓库后 yum install epel-release 突然发现y ...
最新文章
- java %= %,JavaWeb
- Mac环境PHP踩过的“坑” (一)函数重载
- C/C++ 对优先级与结合性的理解
- URL(统一资源定位符)
- Maven+eclipse快速入门
- 全程回顾|罗永浩直播带货首秀
- 【符号修改】之根据静态库符号以#define的形式重命名
- [DB]MariaDB 与 MySql 数据库
- 利用Linux系统实现VLAN间的单臂路由及安全网关的功能
- python regularexpress1
- 【MapReduce】MapReduce(DataJoin)实现数据连接+Bloom Filter优化
- android 模拟gps坐标,android中模拟器中实现GPS坐标改变
- 培训对于微软MCSA认证2011
- 术语-PM:PM/项目管理 百科
- 计算机word降序排列怎么做,WORD表格怎么按照数字降序排列
- MATLAB中对tif格式栅格影像读取-保存
- JavaWeb - 小米商城:用户注册
- ubuntu 14.04+QT5.5+PyQt5.5+Eric-6开发环境搭建
- 【转】HDMI、DVI接口差异之解析
- 2017暴雪php,动视暴雪2017Q4财报 开启全新里程碑