SIGPIPE and EPIPE

SIGPIPE and EPIPESIGPIPEandEPIPESIGPIPE是如下情况引起的(这里只是一个例子)grep”pattern”<reallyhugefile|headgrep有可能会输出上百万行,但是head只需要读取10行就会退出.一旦head将管道的读端关闭,那么grep就会获得SIGPIPE信号,然后被强制退出,使其节约资源.如果不想自己的程序因为这…

大家好,又见面了,我是你们的朋友全栈君。

SIGPIPE and EPIPE

SIGPIPE 是如下情况引起的 (这里只是一个例子)

grep "pattern" < reallyhugefile | head

grep 有可能会输出上百万行, 但是 head 只需要读取10行就会退出. 一旦 head 将管道的读端关闭, 那么 grep 就会获得 SIGPIPE 信号, 然后被强制退出, 使其节约资源.

如果不想自己的程序因为这个信号被杀死, 那么必须自己来处理 SIGPIPE

通常处理办法就是忽略这个信号, 通过 signal() 或是 sigaction(). 当然该状态可以通过全局errno变量来获取(errno == EPIPE)

总给

该信号产生的原因是因为管道的读端关闭了, 而某个地方仍然在用 write() 写数据.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139082.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm opencv安装_pycharm自带python

    pycharm opencv安装_pycharm自带python一、介绍下我的环境:1、win102、python3.53、pycharm3.6二、安装要在pycharm中安装cv2模块,但是没安装openCV前安装失败(安装模块方法:pycharm导入模块)1、openCV库下载:https://www.lfd.uci.edu/~gohlke/pythonlibs/Ctrl+F输入opencv,下载对应版本opencv…

    2022年8月27日
    5
  • shell if 小数 比较

    shell if 小数 比较shell的[]对于数值的判断都是基于整数的,如果碰到小数就无能为力了。google了一把发现用awk的牛人多,不过发现一个兄弟的更加好。if[`expr$a\>$b`-eq0];thenecho$bisbiggerelseecho$aisbiggerfi通过ex…

    2022年7月27日
    24
  • 恶搞代码——vbs进程

    今天跟大家分享一下娱乐的恶搞代码,想必很多人也知道,那么针对电脑小白来说可能就不是非常清楚了,其实过程也很简单,那么下面就是其中比较常见的恶搞源码:一.电脑语音恶搞:首先我们先新建一个后缀为txt的记事本文档,如下图:然后将下面的代码复制到新建的文本文档中:CreateObject(“SAPI.SpVoice”).Speak”你的电脑接收到了一个自爆程序,电脑即将爆炸,请您在15秒时间内…

    2022年4月8日
    1.7K
  • IDEA使用教程_intellij idea使用教程

    IDEA使用教程_intellij idea使用教程idea启动后会在cpan当前用户下生成一个C:\Users\Crystal.IntelliJIdea2018.1文件夹,这个文件夹里面有两个子文件夹config和system。删除这两个文件夹,idea在启动时候会重新配置。idea的project类似于eclipse的workspace;idea的modue类似于eclipse的project;配置都是在setti…

    2022年10月13日
    3
  • 老域名转新网站的方法和步骤_新网站域名不能备案

    老域名转新网站的方法和步骤_新网站域名不能备案第一步:域名解析,登录老域名登录的平台,把老域名解析到新的空间IP上第二步:去新的空间控制面板,域名绑定选项,把老域名绑定上去第三步:等10分钟到1h之间,成功

    2022年10月3日
    2
  • AngularJS进阶(十一)AngularJS实现表格数据的编辑,更新和删除[通俗易懂]

    AngularJS进阶(十一)AngularJS实现表格数据的编辑,更新和删除[通俗易懂]AngularJS实现表格数据的编辑,更新和删除效果实现首先,我们先建立一些数据,当然你可以从你任何地方读出你的数据varapp=angular.module(‘plunker’,[‘ui.bootstrap’]);app.controller(‘MainCtrl’,function($scope){$scope.name=’World’;$sc

    2022年7月25日
    23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号