问题标签 [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 投票
10 回答
221908 浏览

c - 如何防止 SIGPIPE(或正确处理)

我有一个小型服务器程序,它接受 TCP 或本地 UNIX 套接字上的连接,读取一个简单的命令并(取决于命令)发送回复。

问题是客户可能对答案不感兴趣,有时会提前退出。因此,写入该套接字将导致 aSIGPIPE并使我的服务器崩溃。

在这里防止崩溃的最佳做法是什么?有没有办法检查线路的另一端是否仍在阅读?(select()似乎在这里不起作用,因为它总是说套接字是可写的)。还是我应该SIGPIPE用处理程序捕获并忽略它?

0 投票
5 回答
5352 浏览

iphone - 如何在 iphone 应用程序中捕获 sigpipe?

我如何在 iphone/objective-c 中捕获 sigpipe?

谢谢

0 投票
1 回答
1181 浏览

c - 忽略单个弹出文件的 SIGPIPE*

我正在查看的代码在这里:

http://github.com/andymatuschak/Sparkle/blob/8ea15468b4a8c0487ca7a72f3c9e6ffb708c6af8/SUPipedUnarchiver.m

Sparkle 就像一个插件。它可以在多线程程序中实例化。因此,我不想调用 signal(SIGPIPE, SIG_IGN) (即忽略所有SIGPIPE),因为谁知道其他线程正在做什么/期待什么。

如何禁用通过 popen 打开的这个 FILE 指针的 SIGPIPE 信号?

0 投票
1 回答
2990 浏览

iphone - 当应用程序运行后台和锁定屏幕时,iOS4 中的 SIGPIPE 错误

我在我的应用程序中使用BSD套接字在iphone4(iOS4.1)上发送和接收数据,我的应用程序中有三种情况:

  1. 应用程序在前台和屏幕锁定中运行,这很好。
  2. 应用程序在后台运行并且屏幕没有锁定,这也很好(我使用 NSStream 发送和接收数据以使应用程序在后台保持活动状态,它工作正常。)
  3. 应用程序在后台和屏幕锁定中运行,应用程序运行良好,但当应用程序尝试通过 UDP 或 TCP 套接字调用 sendto() 或 send() 时,总是会收到 SIGPIPE 错误。

我搜索了很多但没有任何用处,从这里我知道 SIGPIPE 是什么,并且我使用 setsockopt(sock, SOL_SOCKET, SO_NOSIGPIPE, (void *)&on, sizeof(int)) 来避免应用程序异常退出。但我仍然不知道为什么这个错误只发生在情况 3 以及在这种情况下如何通过 bsd 套接字正常发送数据。


我尝试更新并重新连接,但它不起作用,它仍然得到 SIGPIPE 错误。我认为可能是所有 BSD 套接字在情况 3 中都无法获得内部访问(据我们所知,BSD 套接字无法在 iOS 中激活 wifi 或 EDGE 连接),任何人都可以帮助我或给我一些建议吗?对不起我的英语不好^.^,非常感谢。

0 投票
2 回答
860 浏览

c - 是否有任何 TCP 设置会影响 SIGPIPE?

我在两个系统上测试了相同的测试代码(服务器 - 客户端)。在一个我得到一个 SIGPIPE,在另一个我没有得到 SIGPIPE。

测试场景如下所示:

客户

  1. 连接到服务器
  2. 从服务器接收数据
  3. 发送数据
  4. 关闭套接字

服务器

  1. 接受来自服务器的连接
  2. 向客户端发送数据
  3. 接收数据
  4. 发送数据
  5. 关闭套接字

在一个系统中(客户端和服务器在同一系统上运行),SIGPIPE 随机发生在客户端或服务器端。

但是,在另一个系统中,同样的测试代码不会出现这个问题。

我想知道损坏的管道是否与 TCP 设置有关。

0 投票
2 回答
10919 浏览

tcp - TCP 客户端-服务器 SIGPIPE

我正在设计和测试基于 TCP 套接字(Internet 域)的客户端服务器程序。目前,我正在本地机器上对其进行测试,但无法理解以下有关 SIGPIPE 的内容。

*。SIGPIPE 非常随机地出现。它可以是确定性的吗?

第一个测试涉及来自客户端的单个小(25 个字符)发送操作和相应的服务器接收。相同的代码,在同一台机器上是否成功运行(SIGPIPE)完全不受我的控制。失败率约为 45% 次(相当高)。那么,我可以以任何方式调整机器以尽量减少这种情况。

**。第二轮测试是从客户端向服务器发送 40000 条小消息(25 个字符)(总共 1MB 的数据),然后服务器以它实际接收到的数据的总大小进行响应。客户端在一个紧密的循环中发送数据,并且在服务器上有一个 SINGLE 接收调用。它仅适用于最多发送 1200 字节的总数据,并且再次存在这些不确定的 SIGPIPE,现在大约 70% 次(真的很糟糕)。

有人可以建议对我的设计进行一些改进(可能会在服务器上)。要求是在与服务器建立单个套接字连接后,客户端应该能够发送中等到非常大量的数据(同样每条消息大约 25 个字符)。我有一种感觉,针对单个接收的多次发送总是有损且效率很低。我们是否应该仅在一个 send() 操作中组合消息并发送。这是唯一的出路吗?

0 投票
2 回答
3143 浏览

mpi - 捕获到致命信号:节点 2/32 上的 SIGBUS(7)

我正在尝试在 32 节点集群上运行 NAS-UPC 基准测试。

在问题规模很小的情况下它工作得很好。当我毕业到更大的问题规模(D 类)时,我得到了这个错误(对于 MG 基准测试)

任何人都可以解释为什么会发生这种情况,如果有人以前看到过这个错误并修复它?

编辑:发现这是与内存相关的问题。但我无法在编译时为应用程序分配适量的内存

0 投票
3 回答
2773 浏览

c - 写入数据报套接字是否会引发 SIGPIPE?

我正在使用一些代码,这些代码需要安全地防止杀死调用者SIGPIPE,但它正在执行的唯一套接字写入是数据报套接字(UDP 和 Unix 域数据报套接字)。我需要担心SIGPIPE吗?我connect在套接字上使用,但初步测试(在 Linux 上)表明,ECONNREFUSED如果没有人在 Unix 域套接字上监听,我只会发送。不确定UDP会发生什么。

我可以将整个事情包装在 hacks 中以摆脱SIGPIPE,但如果这不是问题,我宁愿节省开销并降低代码复杂性。

0 投票
1 回答
2859 浏览

iphone - 切换后台任务时SIGPIPE崩溃

在将我的应用程序发送到后台、加载新应用程序、将设备切换到睡眠模式、唤醒设备、关闭新应用程序然后从后台任务打开我的应用程序时,我遇到了奇怪的崩溃。将出现黑屏,我无法使用主页按钮退出此黑屏,并且在调试器中显示以下消息:

节目接收信号:“SIGPIPE”。数据格式化程序不可用(调用 dlopen 时出错:“/Developer/usr/lib/libXcodeDebuggerSupport.dylib”:“dlopen(/Developer/usr/lib/libXcodeDebuggerSupport.dylib, 10):找不到合适的图像。确实找到了:/Developer/ usr/lib/libXcodeDebuggerSupport.dylib:地址空间不足/Developer/usr/lib/libXcodeDebuggerSupport.dylib:stat() 失败,errno=868226285

我该如何解决?

0 投票
3 回答
1205 浏览

objective-c - 在目标 c 中编写网络服务器——上传较大文件时获得 SIGPIPE 调用

我正在为音乐共享应用程序编写网络服务器......当我有一个大文件(即 mp3)时,这不起作用。它在 SIGPIPE 错误代码上崩溃。我发送的标题有“连接:关闭”——但我认为这会等到下载完成后关闭连接。我知道这可能应该被分叉到一个线程中,但为了测试我想让它同步工作。