最近发现第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 可靠相关推荐

  1. 昇腾 OSError: [Errno 22] Invalid argument: ‘protocol‘

    OSError: [Errno 22] Invalid argument: 'protocol' 改为这样不报错,但是报别的错: def __init__(self, family=-1, type= ...

  2. 【B站视频笔记】linux 进程间通信(ipc)信号(软中断信号)signal库函数、可靠信号和不可靠信号、信号集sigprocmask(信号掩码、信号递达Delivery、信号未决Pending)

    [视频教程]Linux信号详解(可靠信号.不可靠信号.阻塞信号.信号处理函数) [博文]Linux信号 文章目录 背景 课程笔记 一.如何让程序在后台运行 1.加"&"符号 ...

  3. linux之errno值为104(connetction reset by peer)

    1 问题 往fd里面写(write方法)入数据的时候出错,返回小于等于0的值,然后这个时候打印errno值是104 2 分析 errno是104就是connetction reset by peer, ...

  4. 网络:TCP维护安全可靠机制提供的定时器

    一.TCP为维护安全可靠机制提供了七大定时器 1.连接建立(connectionestablishment)"定时器: 在发送SYN报文段建立一条新连接时启动.如果在75秒内没有收到响应,连 ...

  5. php获得可靠的精准的当前时间 ( 通过授时服务器 )

    关联:php获取当地时间 time zone 有一种情形是这样子的,比如机票业务中的订票流程,我们需要一个非常可靠的当前时间来支持,尽管大多数服务器的时间是非常准确的,我们使用time()来获取的时间 ...

  6. 可靠信号与不可靠信号

    来自:http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html 一.信号及信号来源 信号本质 信号是软件中断,是在软件层次上 ...

  7. 如何验证Linux Signal可靠信号与不可靠信号

    前面章节已经<Linux下的Signal信号处理及详解>说了,Linux 下的信号分为可靠信号和不可靠信号,或称为实时信号和非实时信号,信号是从1开始编号的,不存在0号信号.0信号用来测试 ...

  8. 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. 问题现象 安装 ...

  9. linux下yum错误:[Errno 14] problem making ssl connection Trying other mirror.

    所有的base 都要取消注释 mirrorlist 加上注释 另外所有的enable都要设为零 目录 今天是要yum命令安装EPEL仓库后 yum install epel-release 突然发现y ...

最新文章

  1. java %= %,JavaWeb
  2. Mac环境PHP踩过的“坑” (一)函数重载
  3. C/C++ 对优先级与结合性的理解
  4. URL(统一资源定位符)
  5. Maven+eclipse快速入门
  6. 全程回顾|罗永浩直播带货首秀
  7. 【符号修改】之根据静态库符号以#define的形式重命名
  8. [DB]MariaDB 与 MySql 数据库
  9. 利用Linux系统实现VLAN间的单臂路由及安全网关的功能
  10. python regularexpress1
  11. 【MapReduce】MapReduce(DataJoin)实现数据连接+Bloom Filter优化
  12. android 模拟gps坐标,android中模拟器中实现GPS坐标改变
  13. 培训对于微软MCSA认证2011
  14. 术语-PM:PM/项目管理 百科
  15. 计算机word降序排列怎么做,WORD表格怎么按照数字降序排列
  16. MATLAB中对tif格式栅格影像读取-保存
  17. JavaWeb - 小米商城:用户注册
  18. ubuntu 14.04+QT5.5+PyQt5.5+Eric-6开发环境搭建
  19. 【转】HDMI、DVI接口差异之解析
  20. 2017暴雪php,动视暴雪2017Q4财报 开启全新里程碑

热门文章

  1. js中的正则表达式(2)
  2. Linux下bash:command not found提示
  3. DevExpress中XtraGrid控件对GridView每行的颜色设置 zt
  4. WORD中插入的公式与文字对不齐——公式比文字高——文字比公式低
  5. 新书预告<******笔记>快赏
  6. 新网域名服务故障的N种可能
  7. 软件设计 -- 流程图的重要性
  8. ceph 对接openstack mitaka
  9. js判断url是否有效
  10. PHP 文件以及目录操作