- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
所以在我的应用程序开始时我调用
signal(SIGPIPE, SIG_IGN);
我认为我的应用程序会忽略 SIGPIPE。但是,我仍然遇到以下代码导致的 SIGPIPE 崩溃:
write(fd, outgoingStr->c_str(), size);
其中 fd 是一个 int(文件描述符),size 是字符串的大小。我在这里做错了什么?
附带说明一下,我最近使用将写入内容包装在 if 中以检查返回的错误值,我相信在删除它之前我从未遇到过 SIGPIPE 崩溃。如果出现错误,if 检查除了向控制台输出外什么都不做,所以我不确定它是否相关。
最佳答案
问题最终是 GDB 将在 SIGPIPE 上停止,即使它被忽略。当正常运行应用程序时,它会按预期工作。
关于Linux SIGPIPE 崩溃服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12888966/
在我的示例应用程序中它显示 SIGPIPE 错误,即使我在 main.m 文件中忽略了该信号 #import #import "AppDelegate.h" int main(int argc, c
我正在处理一些代码,这些代码需要安全地防止由于 SIGPIPE 而杀死调用者,但是它正在执行的唯一套接字写入将转到数据报套接字(UDP 和 Unix 域数据报套接字) ).我需要担心 SIGPIPE
我有两个守护进程,A 正在与 B 通信。B 正在监听一个端口,A 打开一个到该端口的 tcp 连接。 A 能够打开一个到 B 的套接字,但是当它尝试实际写入所述套接字时,我得到一个 SIGPIPE,所
我正在尝试从执行工具的 bash 函数中保存一些日志(其中一些在子 shell 中运行)。此外,我想将所有错误打印到终端。 我的代码导致一个 sigpipe 并在按下 ctr-c 加上一个奇怪的日志文
我正在cocoa中开发一个应用程序,它由用java编写的客户端部分组成,监听来自服务器的请求(例如从客户端计算机读取一些歌曲或文件),有时这工作正常,但有时会出现异常,例如“收到信号SIGPIPE”
我在 C 上的服务器/客户端有这个问题。如果我在 SIGINT 之后关闭服务器套接字,然后我尝试从客户端写这个关闭的连接,我必须在客户端生成 SIGPIPE 之前写两次.它不应该立即生成吗?这是正常行
根据我的理解,SIGPIPE 只能作为 write() 的结果发生,它可以(并且确实)返回 -1 并设置 errno 到 EPIPE...那么为什么我们会有额外的信号开销呢?每次我使用管道时,我都会忽
POSIX环境中可能出现的错误有很多。为什么其中一些(特别是写入未连接的套接字)会以信号的形式得到特殊处理? 最佳答案 这是设计使然,因此当消费者死亡时,在管道中使用的生成文本(例如 find、gre
我有一个在 Linux 上运行的应用程序,捕获信号并将它们报告给系统日志。 此应用程序频繁报告 SIGPIPE 事件,没有明显原因 该应用程序作为守护进程在后台运行。信号发生在空闲时间,没有明显的网络
嗨,我必须开发这个程序,创建 4 个 child ,并依次让他们做一个简单的操作。第一个进行求和,第二个进行余数,第三个进行乘法,第四个进行除法。父亲将在套接字上写入他希望 children “计算”
我想知道 tcp 套接字是否可以立即报告任何损坏的管道错误。目前,当服务器出现故障时,我正在客户端捕获 sigpipe 信号......但我发现生成了 sigpipe 信号只有在第二个消息从客户端发送
我在 C 上的服务器/客户端有这个问题。如果我在 SIGINT 后关闭服务器套接字,然后我尝试从客户端写入这个关闭的连接,我必须先写两次客户端生成 SIGPIPE。它不应该立即生成吗?这是正常行为还是
我正在看的代码在这里: http://github.com/andymatuschak/Sparkle/blob/8ea15468b4a8c0487ca7a72f3c9e6ffb708c6af8/SU
我已经阅读了如何防止SIGPIPE,然后我写了一个小程序来测试它。这是代码。 server.c #include #include #include #include #include #i
我正在尝试在 Bash 中的两个进程之间实现命名管道通信解决方案。 第一个进程向命名管道写入内容: send(){ echo 'something' > $NAMEDPIPE } 第二个脚本应
我正在尝试编写一个包含两个进程的程序: 一个进程生成一些 a + b 问题并将其打印到其标准输出(如 printf("%d %d\n", a, b)),并从另一个进程获取答案通过 stdin,并将答案
我有一个在多个线程中共享的套接字连接池,死连接应该从池中删除,问题是我不知道哪个死于 SIGPIPE sighandler,在这种情况下有什么建议吗? 最佳答案 处理此问题的一种方法是忽略 SIGPI
我有一个用 C 编写的多线程 SSL 服务器,其行为如下: 主线程等待客户端请求 (epoll),接受它们并为每个客户端套接字生成一个分离线程 每个线程分别执行SSL_accept。 SSL 握手 成
我正在做一项作业,涉及编写一个程序来使用 fork(进程)、信号和选择来处理数据(计算 pi)。 我现在正在处理信号,我想我想做的是使用 SIGPIPE,所以如果程序捕获它,它会尝试再次写入管道(如果
所以在我的应用程序开始时我调用 signal(SIGPIPE, SIG_IGN); 我认为我的应用程序会忽略 SIGPIPE。但是,我仍然遇到以下代码导致的 SIGPIPE 崩溃: write(fd,
我是一名优秀的程序员,十分优秀!