问题标签 [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.
php - PHP如何模拟SIGPIPE?
我的环境:Ubuntu 18.04 LTS PHP 7.2.2 ZTS no-debug
我有一个很大的应用程序,有时会Broken pipe
发生错误。我想处理它,但为此我需要模拟这个错误以进行开发。我怎样才能做到这一点 ?
我试过了:
还:
但脚本继续工作。
预期结果:
并且脚本应该停止。
c++ - 调试 X11 程序时如何避免 SIGPIPE(由于超时?)?
有时,当我在 X11 上调试 Qt 程序时,我需要在程序创建窗口QWidget
(在这种情况下,当我在一段时间后从这个断点恢复程序时,程序会得到SIGPIPE
. 当程序在显示窗口之前执行某些操作时也会发生这种情况,并且 Valgrind 将其减慢到 X11 再次超时的低速。至少它似乎与某种超时有关。
我已经设法制作了一个小测试用例,它可以完全重现问题,而无需使用调试器或 Valgrind:
当这个程序得到 时SIGPIPE
,它的堆栈跟踪如下所示:
如果我忽略这个信号(例如signal 0
在 GDB 中说),那么我会收到错误
所以简单地做sigaction
类似的解决方法是行不通的。
我的问题是:如果这确实是一些 X11 超时,我该如何禁用这个超时,或者增加它?如果不是超时,那么它是什么以及如何避免这个SIGPIPE
/ICE 错误问题?
python - 在 Python 中同时运行两个函数
这是python中多线程的简单代码。
但是在运行代码后,我收到以下错误:
BrokenPipeError:[Errno 32] 损坏的管道
我搜索了 SO 和其他网站,常见的答案是包含以下代码段:
但是当我运行它时,我收到以下错误:
ImportError:无法从“信号”导入名称“SIGPIPE”(C:\Users\u65988\AppData\Local\Continuum\anaconda3\lib\signal.py)
我尝试检查所有解决方案,但没有一个解决方案!请帮我解决这个问题!
两个功能供参考:
c - c 中的 shell 无法按预期工作 - 与管道损坏有关
嗨,我在我的操作系统签名中为 UNIX 构建了一个小 minishell,当我编译代码并在我的机器上尝试它时没有错误,但是在自动更正器检查代码的那一刻,它会抛出一个 BROKEN PIPE 错误。这就是我所做的:
ejecutarComando 之后的主要部分似乎运作良好,提前感谢您,并为我糟糕的英语感到抱歉。
c - C 中的命名管道丢失信息
我在 C 中使用命名管道将结构从一个程序传输到另一个程序。当我按原样执行程序时,我意识到在阅读方面我并没有阅读我应该阅读的所有内容。似乎读取或写入过程都会跳过一些值(但数据永远不会损坏,它是否存在或不存在)。在 gdb 中调试时,我可以看到一段时间后(每次持续时间的长度都是随机的),程序以 SIGPIPE: Broken pipe 结束。
然后,我意识到在编写程序中引入 1 秒的延迟可以解决这个信息丢失的问题。我阅读了我应该在接收方阅读的所有内容。
下面是编写程序的代码:
python - 为什么python在关闭fifo文件时会生成sigpipe异常?
TL;DR:为什么关闭收到 SIGPIPE 异常的 fifo 文件(命名管道)会产生另一个 SIGPIPE 异常?
我的 python 脚本正在通过 FIFO 文件将字节写入另一个进程,该进程是我的 python 进程的子进程。(有一些限制,我必须使用命名管道。)
我必须考虑到子进程可能会提前终止的事实。如果发生这种情况,我的 python 脚本必须获取死子进程并重新启动它。
要查看子进程是否死亡,我只是先尝试写入 FIFO,如果我得到一个 SIGPIPE 异常(实际上是 IOError 表示管道损坏),我知道是时候重新启动我的子进程了。
最小的例子如下:
要重现结果,请运行该脚本并手动终止子进程kill -9 <pid>
。回溯会告诉你
那么为什么关闭 FIFO 文件会产生另一个 SIGPIPE 异常呢?
我在以下平台上进行了测试,结果是一样的。
java - JVM 没有在 SIGPIPE 上被杀死
JVM 以这种方式处理 SIGPIPE 的原因是什么?
我本来期望的
和
在编写第 11 行时导致进程被终止,但事实并非如此。相反,似乎trouble
在 PrintStream 上只设置了一个标志,可以通过System.out.checkError()
.
postgresql - Postgresql initdb - 分段错误(核心转储)
我对 pgsql 源代码做了一些改动,比如添加了一个新的系统目录。然后我想使用initdb -D PG_DATA_PATH
. 但是遇到了这个问题:
当我执行和时没有错误或警告。另外,我使用 gdb 来回溯 initdb 的执行:make
make install
这个故障的潜在原因是什么????SIGPIPE 信号???我希望有人能帮助我!!!谢谢。
linux - 防止 bash 中子进程的“断管”
这有一个损坏的管道错误,我想抑制它:
输出:
我尝试了trap -- '' PIPE
子shell,bash -c "tail -f /tmp/foo" 2>/dev/null &
但消息仍然存在。
我该如何压制它?
linux - 关于预期行为的一般信号问题
方案 1
假设存在以下情况。
我的程序调用了第 3 方库,后者又调用了另一个第 3 方库,后者转身并进行操作系统调用。
第一组问题:
- 如果此 OS 调用对已关闭的套接字进行套接字调用,会发生什么?
- 错误是否返回到进行操作系统调用的进程?
- 系统在什么时候返回 SIGPIPE 消息?
- SIGPIPE 是只发送到调用函数还是一直传播到 MyProgram?
方案 2
我碰巧看到一个进程的线程转储的以下输出。
第二组问题:
- 为什么要发送这么多信号消息?
- 这些是直接发送到 MyProgram 还是从较低的操作系统调用向上传播?
- 随着发送的信号种类繁多,如何确定究竟是哪一个导致了问题?