waitpid使用的一点问题】的更多相关文章

使用waipid的时候遇到了一个奇怪的问题,将情况简化后描述一下. 有关waitpid的基本介绍参见这里一下:http://www.cnblogs.com/mickole/p/3187770.html 示例代码如下所示.主进程会处理SIGCHLD信号,处理过程是等待子进程结束,如果子进程正常退出,打印捕获到了SIGCHLD信号,否则打印错误码.让主进程后面sleep 3s是为了防止主进程先于子进程退出,从而没办法响应子进程的退出信号. 测试正常fork的情况 注释掉capture2和test s…
本文介绍了Linux下的进程的一些概念,并着重讲解了与Linux进程管理相关的重要系统调用wait,waitpid和exec函数族,辅助一些例程说明了它们的特点和使用方法. 1.7 背景 在前面的文章中,我们已经了解了父进程和子进程的概念,并已经掌握了系统调用exit的用法,但可能很少有人意识到,在一个进程调用了exit之后,该进程并非马上就消失掉,而是留下一个称为僵尸进程(Zombie)的数据结构.在Linux进程的5种状态中,僵尸进程是非常特殊的一种,它已经放弃了几乎所有内存空间,没有任何可…
man wait: NAME wait, waitpid, waitid - wait for process to change state SYNOPSIS #include <sys/types.h> #include <sys/wait.h> pid_t wait(int *status); pid_t waitpid(pid_t pid, int *status, int options); int waitid(idtype_t idtype, id_t id, sig…
本章包含内容有: 创建新进程 程序执行(program execution) 进程终止(process termination) 进程的各种ID   1 进程标识符(Process Identifiers) 每个进程都有一个唯一的标识符,进程ID(process ID). 进程的ID是可重用的,如果一个进程被终止,那么它的进程ID会被系统回收,但是会延迟使用,防止该进程ID标识的新进程被误认为是以前的进程. 三个特殊ID的进程: Process ID 0:调度者进程,内核进程. Process…
wait() 和 waitpid() wait() 系统调用挂起调用进程的执行直到有一个孩子终止.调用 wait(&status) 等价于: waitpid(-1, &status, 0); waitpid() 系统调用挂起调用进程的执行直到由参数 pid 指定的孩子的状态发生改变.默认情况下,waitpid() 只等待孩子的终止,但是这个行为可能通过 options 参数来改变,具体描述如下. pid 值可以是: < -1 表示等待 进程组ID 为 pid 绝对值的进程组内的所有孩…
当有多个子进程的SIGCHLD信号到达父进程的时候,如果父进程用wait等待,那么父进程在处理第一个达到的SIGCHLD信号的时候,其他的SIGCHLD信号被堵塞,而且信号不被缓存,这样就会导致信号丢失,这样会产生很多的僵尸进程..解决办法是父进程用waitpid来等待子进程信号... 正好看到有人问这样一个问题 看unix网络编程第一卷的时候,碰到书上这样一个例子: 一个并发服务器, 每一个客户端连接服务器就fork一个子进程.书上讲到当同时有n多个客户端断开连接时, 服务器端同时有n多个子进…
本文讲的是关于wait和waitpid两者的区别与联系.为避免僵尸进程的产生,无论我们什么时候创建子进程时,主进程都需要等待子进程返回,以便对子进程进行清理.为此,我们在服务器程序中添加SIGCHLD信号处理函数.   客户端断开连接后,服务器端存在大量僵尸进程.这是由于服务器子进程终止后,发送SIGCHLD信号给父进程,而父进程默认忽略了该信号.为避免僵尸进程的产生,无论我们什么时候创建子进程时,主进程都需要等待子进程返回,以便对子进程进行清理.为此,我们在服务器程序中添加SIGCHLD信号处…
最近遇到一个进程突然退出的问题,由于没有注册signalhandler所以没有捕捉到任何信号. 但是从log中看到init waitpid返回的status为0x008b,以前对status不是很了解,下面的文章对status有比较全面的介绍. 转至http://tsecer.blog.163.com/blog/static/15018172012323975152/ 一.和子进程同步在linux系统中,父进程通常需要通过waitpid来等待/获取子进程状态变化情况,而这个主要就是通过waitX…
在父进程里面调用wait()和waitpid()可以确保子进程先运行,因为当子进程运行完后会变成僵尸进程,此时会发送一个信号给父进程,父进程接受到信号才会运行. 有人或许会问如果在父进程调用wait之前子进程已经运行完了,父进程还会不会运行.答案:即使子进程运行完了,变成僵尸进程,父进程依然会调用wait函数来获取僵尸进程的信息来运行. 对于sleep函数,我还是存在一点疑问的,因为我觉得sleep只是让父进程休眠了一段时间,并不了保证子进程在这段时间里运行了,也就不能确保子进程一定先运行.但是…
现在,我学了很长时间的C++,但是自己就是无法精通.许多知识是入门书上没有的.现在写C++最重要的就是风格问题. 我现在的C++风格: 把自己所有的东西都放在一个名称空间下. 没有全局的函数,有的函数没有定义在类中,就把这些函数全部放在一个名称空间中,把所有类外部的函数分类放在特定的名称空间中,有些特殊的类或者函数之是为其他的类或函数做服务,外部不需要他们的,只是内部使用的时候,就把他们放在叫Detail的名称空间中,防止名称空间污染. 类或函数遵循Pascal风格:开头大写,后面的每一个单词的…
上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实现机制. 上篇中最后有那段代码使用了一个ProxyFactory类来完成代理的工作,从而实现了Aop的Around Advice,代码如下: package aop.demo; import org.springframework.aop.framework.ProxyFactory; public clas…
一个队列如果只生产不消费肯定不行的,那么如何及时消费Ring Buffer的数据呢?简单的方案就是当Ring Buffer"写满"的时候一次性将数据"消费"掉.注意这里的"写满"仅仅是指写入位置 index达到了数组最大索引位置,而"消费"也不同于常见的堆栈,队列等数据结构,只是读取缓冲区的数据而不会移除它.一点公益系统 一点公益系统模式 一点公益平台 一点公益APP系统 一点公益商业模式定制找陈牧150-1315-1740(…
支持向量机的学习说是刚刚开始,又不合理,只能说隔了很长的时间再看,终于在分类这块的层面上有了新的认识. 总的来说,支持向量机分为线性支持向量机和非线性支持向量机,线性支持向量机又可以分为硬间隔最大化线性支持向量机和軟间隔最大化线性支持向量机:非线性支持向量机需要选择合适的核函数,从而达到非线性分类. 线性支持向量机和线性分类和logictic regression分类的比较: (1)线性支持向量机只支持二分类,而逻辑回归既支持二分类又支持多分类: (2)进行二分类的时候,逻辑回归模型原始输出为g…
文章来源:http://www.admin10000.com/document/2111.html 在互联网行业,基于Unix/Linux的网站系统架构毫无疑问是当今主流的架构解决方案,这不仅仅是因为Linux本身足够的开放性,更因为围绕传统Unix/Linux社区有大量的成熟开源解决方案,覆盖了网站应用扩展的方方面面. 我记得十几年前第一波互联网浪潮的时代,采用Windows平台ASP架构的大型网站是非常普及的,而如今采用Windows平台.net架构的大流量知名网站已经凤毛麟角了.很多采用W…
算了一下又有好几个月没写博客了,最近在忙公司android的项目,所以也就很少抽时间来写些东西了.刚闲下来,我就翻了翻之前看的东西.做了android之后更加感觉到手机端开发的重要性,现在做native App  和Web App是主流,也就是说现在各种基于浏览器的web app框架也会越来越火爆了,做js的也越来越有前途.我也决定从后端开发渐渐向前端开发和手机端开发靠拢,废话不说了,我们来切入正题“js的回调函数”相关的东西. 说起回调函数,好多人虽然知道意思,但是还是一知半解.至于怎么用,还…
我们目前对.NET的理解大部分可以归纳为:起初它是Java平台(注意是平台,不要跟Java语言搞混淆)的一个克隆品,后来慢慢演变,有了自己的特性.由于Java平台最显著的特点就是“平台独立性”(或者说不知道谁发明的Write once,Run anywhere这个话).理论上,你可以写一个程序编译完后,跑在任何一个安装有JVM的操作系统上.大部分人认为.NET的出现是效仿Sun公司的这个伟大的概念——平台独立性,从而与Java抗衡.再后来又有一些人不知道从哪得出的结论说,就算有像Mono这样的非…
乱想 javascript为什么需要隐式转换?如果没有会出现什么情况? 找了一圈没有看到关于这个的讨论,只好自己研究了,可能不一定正确,自行辨知. 郁闷就是郁闷在好好的,为什么要搞个隐式转换,一般来讲这样去想不太可能想出个结果,毕竟这门语言不是自己写的,如果换一个问题,可能会好点,如果没有隐式转换javscript会成什么样子? 比如下面这一段代码: console.log("10" - 1) 如果没有隐式转换,也许会报错吧?或者返回NaN?,不太确定,但假如说javascript根本…
这篇文章内容会很短,主要是想给大家分享下我最近在做一个简单的rabbitmq客户端类库的封装的经验总结,说是简单其实一点都不简单.为了节省时间我主要按照Library的执行顺序来介绍,在你看来这里仅仅是一个简单的经验总结,但是在我看来这些经验只有在你真正的封装rabbitmq客户端库的时候且将你的客户端安全稳定的发布上线后才会真的发现这些问题. 比如你的库只是链接单个Node的时候和链接高可用集群的HAProxy时候是完全两回事.当你未能在你的库里使用反向注入LOG接口的时候一旦在线上发生网络解…
可能园子里有不少文章已经说明了这个问题了,但是我在这里写这篇博客只是写写自己的一些体会,也权当是整理归纳,高手莫见笑. ===============正文分割线================== 现在正在学<编译原理>课,老师让我们根据给出的语言定义自己开发一个编译器,本人对C#还是比较熟悉的所以优先选择C#作为开发工具.本人用的是VS2012配Resharper,这是一个很好用的代码分析及重构的工具,简化了不少工作,但也有些问题一直都搞不懂.例如,在这个类中,Resharper一直提示“将…
最近有被问到SVM的问题,不懂装懂,羞愧不已.百度有很多深入浅出介绍SVM的文章,我就不赘述了,这里写一点自己肤浅的理解. SVM的核心思想是把求解低维空间上的高维分类器转化为求解高维函数空间上的线性分类器.为了达到这一目的,SVM引入了三大法宝. 第一是支持向量.支持向量相当于样本数据的典型代表(或者临界样本),分类器只依赖于支持向量,简化了其复杂度. 第二是核函数.SVM通过核函数把低维空间上的样本数据的关系转化为高维函数空间的内积关系.把数据从低维空间向高维函数映射,实际上增加了模型的复杂…
已经找好工作近两周了,入职基本上还算顺利,自己两年来的挑灯夜战也算是有了收获,于是这两周基本上是按部就班的工作,没有学习什么新技术.在上个公司的时候,同事在项目中使用angularJs,之前他也没有接触过angularJs,一边学习一边做项目,结果给项目团队造成了很大的困扰.angularJS他研究的不透彻,在使用的过程中造成了很大的弊端,比如标签闪烁,暴露出未解析的源代码等.在商业的项目上尝试使用新技术是十分危险的,轻则项目留坑,给维护留下巨大的安全隐患,重则项目流产,商业计划因此而毁于一旦,…
有点失落.迷茫,差点在上班的时候发了火.原因是之前离职的一位同事,在代码里不加注释,而且百般偷懒,致使很多应该的验证没有验证,很多应该考虑到的情况没有考虑.因为是老员工,我相比他来说是新员工.气势上总是差那么一点点的,不敢去质疑前辈们的代码.但是这样下去,项目的质量一直提升不上去,讲他还不能讲,对于整个项目管理来说这样的员工就是一颗定时炸弹.虽然是写了代码,恭喜还能跑,但是这是在浪费公司的资源,也是在浪费同事的时间.这样的代码以后维护起来,是要花费很大的代价的,是非常大的代价.然而现在已经是这种…
C#中精确计时的一点收获 [转] 以下所有代码运行环境:Windows 2003, Intel(R) Core(TM) 2 Duo CPU E8400 @  3.00GHz 2.99GHz,2.96GB内存 根据综合网上的一些文章,精确计时主要有以下几种方式 1 调用WIN API中的GetTickCount [DllImport("kernel32")]static extern uint GetTickCount(); 从操作系统启动到现在所经过的毫秒数,精度为1毫秒,经简单测试发…
若子进程先于父进程结束时,父进程调用wait()函数和不调用wait()函数会产生两种不同的结果: --> 如果父进程没有调用wait()和waitpid()函数,子进程就会进入僵死状态. --> 如果父进程调用了wait()和waitpid()函数,就不会使子进程变为僵尸进程. 这是为什么呢?现在我们来深入学习wait()函数和waitpid()函数. wait() 和 waitpid() 学习 1.首先我们先看一下它们的函数原型: 在终端输入命令:man 2 wait 就会看到它的函数原型…
之前无法正常更新ENUM类型的数据,感觉是框架函数实现的bug. 问题很诡异,因为INIT的时候是可以成功写入的,没理由UPDATE的时候不成功. 前后琢磨了一下午,发现了一点蛛丝马迹才终于想通.问题出在Cakephp操作对ENUM类型值的保存做了一点手脚. 具体关于ENUM的实现暂时不提. 我的bug原因在于我的ENUM取的值是‘1’,‘2’,‘3’,‘4’,当我通过Model->set('col1','4')时,table里的表是1,跟init的时候一样.当时我认为UPDATE ‘col1’…
16:45 2015/12/8phpunit测试学习 1:一点简单的扼要有用的东西的总结  一点入门认识 具体的入门安装和入门实践请参照文中的推荐博客或网上其他博客推荐博客,我感觉这几篇博客写得很不错,虽然一和二可以结合在一起,内容并不多 且给新手更容易带来学习信心:安装建议参照我的另一篇安装博客,因为当时我是按照这种方式失败的,文中提及网 络原因导致失败,我当时显示的是安装的某个路径似乎没有维护了,那个url已经不存 在了(所以我也不知道是网络原因还是真的那个路径不存在了)(PHP教程:PHP…
很长时间没有更新博客了,实在是太忙啦...0.0 ,以下的东西纯粹是记录,不是我原创,放到收藏夹还担心不够,这个以后常用,想来想去,还是放到这里吧,,丢不了..最后一句废话,网上搜集也好原创也罢,能解决问题不糊弄人才是真道理! 反正我的问题解决啦!!!哈哈哈!! 安装grunt 原文:www.bluesdream.com/blog/windows-installs-the-grunt-and-instructions.html 怕这个网址打不开,记录下: 安装Grunt:如果你之前安装过老的0.…
想将LinearLayout作为一个按钮,加上一个动态背景,按下的时候,背景变色,这个理所当然应该使用selector背景选择器来做: <LinearLayout android:id="@+id/btn_user_profit_record" android:layout_width="0dp" android:layout_height="130dp" android:layout_weight="1" androi…
大家在使用ADC的时候,往往最关注位数,而对ADC的线性度往往会忽略. 其实这个线性度也是ADC非常重要的指标,ADC(或DAC,其实ADC也是由DAC组成的)线性度指标有两个: INL:翻译过来叫“积分非线性”,指的是ADC整体的非线性程度. DNL:翻译过来叫“微分非线性”,指的是ADC局部(细节)的非线性程度. 我们通常讲的“线性度”都是指“积分非线性”,积分非线性一般以百分比给出,或者以位数给出.举个例子:AD7705(16位)的datasheet上说有0.003%的非线性.1LSB为1…
代码如下: #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <stdio.h> #include <errno.h> #include <stdlib.h> inline int mySystem(const char *cmd) { pid_t pid; ; int status; ) status = -; == pid) { ex…