如何屏蔽SIGPIPE信号

如何屏蔽SIGPIPE信号#include<stdlib.h>#include<sys/signal.h>//默认读写一个关闭的socket会触发sigpipe信号该信号的默认操作是关闭进程这明显是我们不想要的//所以我们需要重新设置sigpipe的信号回调操作函数比如忽略操作等使得我们可以防止调用它的默认操作//信号的处理是异步操作也就是说在这一条语句以后继续往下执行中如果碰到信号依旧会调用信号的回调处理函数//处理sigpipe信号voidhandle_for_s

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

#include <stdlib.h>
#include <sys/signal.h>

//默认读写一个关闭的socket会触发sigpipe信号 该信号的默认操作是关闭进程 有时候这明显是我们不想要的
//所以此时我们需要重新设置sigpipe的信号回调操作函数 比如忽略操作等 使得我们可以防止调用它的默认操作 
//信号的处理是异步操作 也就是说 在这一条语句以后继续往下执行中如果碰到信号依旧会调用信号的回调处理函数
//处理sigpipe信号
void handle_for_sigpipe()
{ 
   
    struct sigaction sa; //信号处理结构体
    memset(&sa, '\0', sizeof(sa));
    sa.sa_handler = SIG_IGN;//设置信号的处理回调函数 这个SIG_IGN宏代表的操作就是忽略该信号 
    sa.sa_flags = 0;
    if(sigaction(SIGPIPE, &sa, NULL))//将信号和信号的处理结构体绑定
        return;
}

int main(int argc, char *argv[])
{ 
   
    handle_for_sigipipe();
    while(1){ 
   }
    return 0;
}

(1)编译执行上述代码gcc -o handle_for_sigpipe handle_for_sigpipe.c
启动另一个Linux终端并执行killall -SIGPIPE sigpipe,可以发现sigpipe程序的默认操作关闭进程并未执行。
(2)将main函数中的handle_for_sigpipe();,注释后重新编译执行。
再次启动另一个Linux终端并执行killall -SIGPIPE sigpipe,可以发现sigpipe程序退出了。

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139188.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • MemReduct内存自动清理工具

    MemReduct内存自动清理工具MemReductMemReduct是国外一款专业的内存清理软件,现在越来越多的软件由于硬件的普遍发展,对内存的使用都开始肆无忌惮起来,这对内存比较小的老电脑来说就非常不友好了,即使新电脑也会受不了,如果你的电脑也因为常常内存不足而卡顿,就来下载这款软件试试吧。也可以安装在服务器上,定期整理内存,保持内存空间舒畅。https://www.henrypp.org/product/memred…

  • 两个div并排,左边div固定宽度,右边宽度自适应

    两个div并排,左边div固定宽度,右边宽度自适应

    2021年11月22日
  • 干货 | 京东云弹性伸缩功能实践

    干货 | 京东云弹性伸缩功能实践

  • 大数据管理与分析技术(1)[通俗易懂]

    大数据管理与分析技术(1)[通俗易懂]一、大数据的基本概念摘要:大数据基本概念考点:大数据的4V特征、类型(结构化与非结构化大数据)、核心技术(分布式存储和分布式处理)、大数据计算模式(批处理计算、流计算、图计算、查询分析计算)、每类计算模式典型的代表产品。大数据的4V特征规模性(volume)、多样性(variety)、价值密度(value)和高速性(velocity)大数据的类型结构化大数据:能够用数据或统一的结构加以表示的,如数字、符号。传统的关系数据模型,行数据,存储于数据库,可用二维表结构表示。非结构化大数据:是指其字段

  • 同步测试

    同步测试##要求:1编译运行附件中的代码,提交运行结果截图,并说明程序功能2修改代码,把同步资源个数减少为3个,把使用资源的线程增加到(你的学号%3+4)个,编译代码,提交修改后的代码和运行结果

  • idea的安装_theia ide

    idea的安装_theia idetheia-ide是一个能运行在浏览器里的开发环境,对常用语言都有很好的支持。非常适合在服务器上运行。本文介绍theia在docker环境下的安装和使用。首次运行基本版,包含基本的编辑功能dockerrun-it-p3000:3000-v"$(pwd):/home/project:cached"theiaide/theia:latest完整版dockerrun-it…

发表回复

您的电子邮箱地址不会被公开。

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