问题标签 [sigpipe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
926 浏览

unix - SIGPIPE 如何影响命名管道中的作者?

我们需要将应用程序的标准输出重定向到我们的程序。而且我们不能更改应用程序。因此,我们无法在编写器中处理 SIGPIPE。我们不希望应用程序在程序崩溃时终止。未命名的管道无法工作。但是命名管道呢?我们在想,如果我们的程序崩溃了,我们可以重新启动它,并将它附加到命名管道。这有什么意义吗?

命名管道上的作者会在 SIGPIPE 中被阻止吗?

0 投票
3 回答
5146 浏览

c - 在尝试写入之前检查是否有损坏的管道?

是否可以在尝试写入/读取之前检查管道是否损坏,所以我可以跳过它并继续程序?

我正在使用一个while循环来写入从父级到多个子级通信的管道。在循环过程中,几个孩子将关闭。当循环出现并尝试再次写入它们时,我的程序将关闭,因为它被 SIGPIPE 杀死,因为管道已损坏。我知道管道坏了,我给孩子们编程关闭管道并退出(必要)。我仍然想完成循环并继续执行程序。我希望它检查管道是否损坏,如果损坏则跳过它(没有错误输出),然后继续执行程序(其他孩子仍然需要写入)。

那么,有可能吗?c中的一个例子会很棒。

这是我要问的简单伪代码表示:

这个问题与我以前的帖子有关,尽管我的问题的上下文不同。您可以在那里查看实际程序的代码。

0 投票
0 回答
1156 浏览

python - python3:我的信号库中缺少 SIGPIPE

我有一个程序,之前在它的顶部使用了以下声明。

该程序处理一个长时间运行的 IRC 连接,所以我认为这对于防止在尝试写入损坏的套接字时发生灾难性错误是必要的。

但是我现在重新访问代码,我的环境发生了轻微变化。我安装了 python 3.4,脚本抱怨无法导入 SIGPIPE。

果然,当我查看信号类时,我发现它不再具有 SIGPIPE 成员?

什么给出,以及如何更正我的代码?

0 投票
1 回答
1162 浏览

c - sigpipe c server/client - 程序在哪里重新启动?

我有一个客户端/服务器程序,现在我想处理信号。当客户端关闭连接时(例如,如果我关闭终端),服务器必须处理 SIGPIPE,对吗?我想实现这样的东西。可能吗?

服务器.c:

0 投票
1 回答
914 浏览

c - 在关闭的连接上写入不会立即生成 sigpipe

我在 C 上的服务器/客户端有这个问题。如果我在 SIGINT 之后关闭服务器套接字,然后我尝试从客户端写这个关闭的连接,我必须在客户端生成 SIGPIPE 之前写两次. 它不应该立即生成吗?这是正常行为还是我需要解决的问题?这是我的代码。我正在通过 127.0.0.1 连接的同一台 PC 上的 ubuntu 上进行测试。

服务器.c

客户端.c

问题是当我使用 CTRL+C 关闭服务器终端时,从客户端对连接的第一次写入工作没有任何问题... perror("Error:"); 打印“成功”...

0 投票
1 回答
1930 浏览

swift - iOS SWIFT 应用程序 - 如何全局忽略 SIGPIPE 信号?

我试图忽略我在 Swift 应用程序中使用的第三方 SDK 抛出的 SIGPIPE 信号。如何让我的应用程序全局忽略 SIGPIPE 信号?

0 投票
1 回答
110 浏览

python - Python - ubuntu 12.04 中的分段错误

我的程序是用 Python 编写的,它在 vte 窗口中调用 bash 脚本:

在此处输入图像描述

在 14.04 或 14.10 的 ubuntu 系统中,没有问题。(蟒蛇2.7.8)

但是,在 ubuntu 12.04 中,窗口关闭并显示以下消息:(python 2.7.3)

为了调试,我尝试使用gdb这一行:

最后gdb的输出是:

我知道这是 bash 脚本的问题,但我不知道真正的问题是什么。调用 bash 脚本的行是:

可以为 ubuntu 12.04 调试这个吗?我能怎么做 ?

0 投票
1 回答
442 浏览

c - 在 Ubuntu 中无法捕获 SIGPIPE 信号

我遇到了一个 SIGPIPE 崩溃问题,我想记录它并尝试存在。
但我无法通过后续代码捕获 SIGPIPE。
我尝试使用“kill -s signal process”来验证我的代码,它适用于信号 SIGINT、SIGSTOP、SIGSEGV 和 SIGALRM。
但在 SIGPIPE 上失败了。
如果我在这里错过任何东西,请您告知。

我的环境是 Ubuntu 12.04 LTS

0 投票
0 回答
920 浏览

python - 411 响应导致 Session.send 异常

更新: 开发 Requests.py 的好心人正在处理此案。

我们正在与 HTTP 服务进行交互(测试),该服务在存在请求正文的情况下未提供Content-Length请求标头时响应 411(需要长度)状态代码;根据RFC 2616 ,这是可以预料的。

我们遇到的问题围绕请求 Python 模块(curl 按预期工作)。当发送一个格式错误的请求(在存在请求正文时缺少 Content-Length)时,服务会响应 411 并且连接被远程端点关闭(Connection: close)。这反过来会从 Requests Session.send 方法中引发异常,并且我们无法检索 HTTP 响应状态代码以进行验证。

是否可以在不更改 HTTP 服务的情况下停止这种情况(异常)并检索 HTTP 响应状态代码?

代码

堆栈跟踪

要求

回复

环境

蟒蛇:2.7.5

要求:2.5.3

0 投票
2 回答
1722 浏览

c++ - C++ 和 OpenSSL:在封闭管道中写入时的 SIGPIPE

我正在为 Linux 上的 TCP 连接编写 C++ SSL 服务器。当程序用于SSL_write()写入封闭管道时,会抛出 SIGPIPE-Exception 导致程序关闭。我知道这是正常行为。但是当对等方没有正确关闭连接时,程序不应该总是死掉。

我已经用谷歌搜索了很多东西,并且尝试了几乎所有我发现的东西,但似乎没有什么对我有用。signal(SIGPIPE,SIG_IGN)不起作用 - 仍然会抛出异常(对于signal(SIGPIPE, SomeKindOfHandler).

gdb 输出:

关于代码:

我正在使用一个正在等待新连接并接受它们的线程。然后线程将连接信息(BIO 和 SSL)放入NetInterface类内的静态映射中。每 5 秒NetInterface::sendTOSubscribers()从 执行一次main()。此函数访问静态映射并将数据发送到其中的每个连接。这个函数也是 SIGPIPE 的来源。我已经使用signal(SIGPIPE,SIG_IGN)in main()(显然是在 5 秒循环之前)和 in NetInterface::SendToSubscribers(),但它在任何地方都不起作用。

谢谢你的帮助!