问题标签 [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 回答
206 浏览

php - PHP如何模拟SIGPIPE?

我的环境:Ubuntu 18.04 LTS PHP 7.2.2 ZTS no-debug

我有一个很大的应用程序,有时会Broken pipe发生错误。我想处理它,但为此我需要模拟这个错误以进行开发。我怎样才能做到这一点 ?

我试过了:

还:

但脚本继续工作。

预期结果:

并且脚本应该停止。

0 投票
1 回答
387 浏览

c++ - 调试 X11 程序时如何避免 SIGPIPE(由于超时?)?

有时,当我在 X11 上调试 Qt 程序时,我需要在程序创建窗口QWidget(在这种情况下,当我在一段时间后从这个断点恢复程序时,程序会得到SIGPIPE. 当程序在显示窗口之前执行某些操作时也会发生这种情况,并且 Valgrind 将其减慢到 X11 再次超时的低速。至少它似乎与某种超时有关。

我已经设法制作了一个小测试用例,它可以完全重现问题,而无需使用调试器或 Valgrind:

当这个程序得到 时SIGPIPE,它的堆栈跟踪如下所示:

如果我忽略这个信号(例如signal 0在 GDB 中说),那么我会收到错误

所以简单地做sigaction类似的解决方法是行不通的。

我的问题是:如果这确实是一些 X11 超时,我该如何禁用这个超时,或者增加它?如果不是超时,那么它是什么以及如何避免这个SIGPIPE/ICE 错误问题?

0 投票
1 回答
281 浏览

python - 在 Python 中同时运行两个函数

这是python中多线程的简单代码。

但是在运行代码后,我收到以下错误:

BrokenPipeError:[Errno 32] 损坏的管道

我搜索了 SO 和其他网站,常见的答案是包含以下代码段:

但是当我运行它时,我收到以下错误:

ImportError:无法从“信号”导入名称“SIGPIPE”(C:\Users\u65988\AppData\Local\Continuum\anaconda3\lib\signal.py)

我尝试检查所有解决方案,但没有一个解决方案!请帮我解决这个问题!

两个功能供参考:

0 投票
1 回答
404 浏览

c - c 中的 shell 无法按预期工作 - 与管道损坏有关

嗨,我在我的操作系统签名中为 UNIX 构建了一个小 minishell,当我编译代码并在我的机器上尝试它时没有错误,但是在自动更正器检查代码的那一刻,它会抛出一个 BROKEN PIPE 错误。这就是我所做的:

ejecutarComando 之后的主要部分似乎运作良好,提前感谢您,并为我糟糕的英语感到抱歉。

0 投票
0 回答
224 浏览

c - C 中的命名管道丢失信息

我在 C 中使用命名管道将结构从一个程序传输到另一个程序。当我按原样执行程序时,我意识到在阅读方面我并没有阅读我应该阅读的所有内容。似乎读取或写入过程都会跳过一些值(但数据永远不会损坏,它是否存在或不存在)。在 gdb 中调试时,我可以看到一段时间后(每次持续时间的长度都是随机的),程序以 SIGPIPE: Broken pipe 结束。

然后,我意识到在编写程序中引入 1 秒的延迟可以解决这个信息丢失的问题。我阅读了我应该在接收方阅读的所有内容。

下面是编写程序的代码:

0 投票
1 回答
344 浏览

python - 为什么python在关闭fifo文件时会生成sigpipe异常?

TL;DR:为什么关闭收到 SIGPIPE 异常的 fifo 文件(命名管道)会产生另一个 SIGPIPE 异常?

我的 python 脚本正在通过 FIFO 文件将字节写入另一个进程,该进程是我的 python 进程的子进程。(有一些限制,我必须使用命名管道。)

我必须考虑到子进程可能会提前终止的事实。如果发生这种情况,我的 python 脚本必须获取死子进程并重新启动它。

要查看子进程是否死亡,我只是先尝试​​写入 FIFO,如果我得到一个 SIGPIPE 异常(实际上是 IOError 表示管道损坏),我知道是时候重新启动我的子进程了。

最小的例子如下:

要重现结果,请运行该脚本并手动终止子进程kill -9 <pid>。回溯会告诉你

那么为什么关闭 FIFO 文件会产生另一个 SIGPIPE 异常呢?

我在以下平台上进行了测试,结果是一样的。

0 投票
1 回答
74 浏览

java - JVM 没有在 SIGPIPE 上被杀死

JVM 以这种方式处理 SIGPIPE 的原因是什么?

我本来期望的

在编写第 11 行时导致进程被终止,但事实并非如此。相反,似乎trouble在 PrintStream 上只设置了一个标志,可以通过System.out.checkError().

0 投票
1 回答
426 浏览

postgresql - Postgresql initdb - 分段错误(核心转储)

我对 pgsql 源代码做了一些改动,比如添加了一个新的系统目录。然后我想使用initdb -D PG_DATA_PATH. 但是遇到了这个问题:

当我执行和时没有错误或警告。另外,我使用 gdb 来回溯 initdb 的执行:makemake install

这个故障的潜在原因是什么????SIGPIPE 信号???我希望有人能帮助我!!!谢谢。

0 投票
0 回答
65 浏览

linux - 防止 bash 中子进程的“断管”

这有一个损坏的管道错误,我想抑制它:

输出:

我尝试了trap -- '' PIPE子shell,bash -c "tail -f /tmp/foo" 2>/dev/null &但消息仍然存在。

我该如何压制它?

0 投票
1 回答
26 浏览

linux - 关于预期行为的一般信号问题

方案 1

假设存在以下情况。

我的程序调用了第 3 方库,后者又调用了另一个第 3 方库,后者转身并进行操作系统调用。

第一组问题:

  • 如果此 OS 调用对已关闭的套接字进行套接字调用,会发生什么?
  • 错误是否返回到进行操作系统调用的进程?
  • 系统在什么时候返回 SIGPIPE 消息?
  • SIGPIPE 是只发送到调用函数还是一直传播到 MyProgram?

方案 2

我碰巧看到一个进程的线程转储的以下输出。

第二组问题:

  • 为什么要发送这么多信号消息?
  • 这些是直接发送到 MyProgram 还是从较低的操作系统调用向上传播?
  • 随着发送的信号种类繁多,如何确定究竟是哪一个导致了问题?