sigpipe相关内容

程序收到信号 SIGPIPE, Broken pipe

我编写了一个基于 posix 套接字的客户端程序.该程序创建多个线程并将锁定服务器.但是在 gdb 调试期间,程序给出了一个信息(错误) (gdb) n程序收到信号 SIGPIPE,断管.[切换到线程 0xb74c0b40 (LWP 4864)] __kernel_vsyscall() 中的 0xb7fdd424(gdb) 代码如下: #include #include #include # ..
发布时间:2021-12-11 11:29:53 其他开发

如何防止 SIGPIPE(或正确处理它们)

我有一个小型服务器程序,它接受 TCP 或本地 UNIX 套接字上的连接,读取一个简单的命令并(取决于命令)发送回复. 问题是客户端可能对答案不感兴趣,有时会提前退出.因此,写入该套接字将导致 SIGPIPE 并使我的服务器崩溃. 防止此处崩溃的最佳做法是什么?有没有办法检查线路的另一边是否仍在阅读?(select() 在这里似乎不起作用,因为它总是说套接字是可写的).或者我应该使用处 ..
发布时间:2021-12-02 00:10:07 其他开发

TCP客户端服务器SIGPIPE

我正在设计和测试基于TCP套接字(Internet域)的客户端服务器程序.目前,我正在本地计算机上对其进行测试,并且无法理解有关SIGPIPE的以下内容. *. SIGPIPE随机出现.可以确定吗? 第一个测试涉及到客户端的单个小(25个字符)发送操作以及服务器上的相应接收操作.同一台计算机上的同一代码是否成功运行(SIGPIPE)完全超出了我的控制范围.失败率约为45%的次数(相当高 ..
发布时间:2020-07-25 02:43:25 其他开发

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

我在C上的服务器/客户端存在此问题.如果我在SIGINT之后关闭服务器套接字,然后尝试从客户端在此关闭的连接上进行写操作,则必须比客户端生成SIGPIPE.它不应该立即生成吗?这是正常现象还是我需要解决的问题?这是我的代码.我正在同一台PC上通过127.0.0.1连接的ubuntu上进行测试. server.c sigset_t set; struct sigaction sign; ..
发布时间:2020-07-25 02:43:20 其他开发

程序接收到信号SIGPIPE,管道损坏

我写了一个基于posix套接字的客户端程序.该程序将创建多个线程,并将锁定服务器.但是在gdb调试期间,程序会给出一个信息(错误) (gdb) n Program received signal SIGPIPE, Broken pipe. [Switching to Thread 0xb74c0b40 (LWP 4864)] 0xb7fdd424 in __kernel_vsyscall ( ..
发布时间:2020-07-25 02:42:16 其他开发

IOError:[Errno 32]管道损坏:Python

我有一个非常简单的Python 3脚本: f1 = open('a.txt', 'r') print(f1.readlines()) f2 = open('b.txt', 'r') print(f2.readlines()) f3 = open('c.txt', 'r') print(f3.readlines()) f4 = open('d.txt', 'r') print(f4.readl ..
发布时间:2020-07-25 02:41:14 Python

预防SIGPIPE

让我们考虑以下示例. 我有一个父进程,该进程创建一个管道,产生一个子代,并使用该管道读取子代的标准输出.在某些时候,父进程不再对子进程的输出感兴趣,并关闭管道的读取端. 显然,如果子进程继续书写,这将导致子进程接收到SIGPIPE信号. 问题:是否有一种方法可以将子级的输出重定向到/dev/null,以便它仍然保持运行并产生输出,但是父进程可以继续执行其他操作并稍后在子级上调用w ..
发布时间:2020-05-29 18:45:38 服务器开发

忽略Bash pipefail出现错误代码141

设置bash pipefail 选项(通过 set -o pipefail )允许脚本失败,零错误被捕获在管道的任何步骤中都有非零错误。 但是,我们正在运行到 SIGPIPE 错误(错误代码141),其中数据写入不再存在的管道。 有没有办法将bash设置为忽略 SIGPIPE 错误,或者是否有一种方法来编写一个处理所有错误状态代码的错误处理程序,例如0和141? 例如,在Pyth ..
发布时间:2017-08-28 02:26:59 Python

切换后台任务时SIGPIPE崩溃

当我将应用程式传送到背景,载入新应用程式,将装置切换至睡眠模式,唤醒装置,关闭新应用程式,然后从后台工作中开启我的应用程式时,我遇到了一个奇怪的问题。黑屏将出现,我不能退出此黑屏与主页按钮,并在调试器中显示此消息: 程序接收信号:“SIGPIPE”。 数据格式化器不可用(错误 调用dlopen for: “/Developer/usr/lib/libXcodeDebuggerSuppo ..
发布时间:2017-01-13 12:23:14 移动开发

什么才是1号在SIG_IGN宏定义的含义是什么?

的#define SIG_IGN(无效(*)(INT))1 #定义SIG_HOLD(无效(*)(INT))5 #定义SIG_ERR((无效(*)(INT)) - 1) 我知道什么是(无效(*)(INT))表示:投unknown_name到函数指针(INT)返回void 但是,什么是意义以下 1 ? 解决方案 的常数被使用,以便它可以从一个有效的函数指针来区分。它本身没有任何意义(不是被其 ..
发布时间:2016-08-25 10:08:11 服务器开发

在关闭的插座写不会立刻产生SIGPIPE

我有这个问题,在我的C.服务器/客户端如果我一个SIGINT后关闭服务器套接字,然后我尝试从客户端这个封闭套接字写之前比,我已经做写两次客户端生成SIGPIPE。难道不应该立刻产生的呢?这是一种正常的行为或东西我需要解决?这是我的code。我在Ubuntu上,同一台电脑测试的东西,通过127.0.0.1连接。 server.c sigset_t集; 结构sigaction的标志; INT s ..
发布时间:2016-08-25 09:14:13 C/C++

节目接收信号SIGPIPE,管道中断?

我写的基于POSIX套接字的客户端程序。该程序创建多个线程,并有继续锁定服务器。但在GDB的调试过程中程序提供了一个信息(错误)“(GDB)N 程序接收到的信号SIGPIPE,管道中断。 [切换主题 0xb74c0b40(LWP 4864)] 0xb7fdd424在__kernel_vsyscall()(GDB)“ 这里的code 的#include< ARPA / inet ..
发布时间:2016-08-21 19:53:08 C/C++

写上由对等关闭的TCP套接字

我有其中每一个侧经由TCP套接字与其他通信的客户端 - 服务器应用 我正常建立连接,然后我崩溃的服务器之前的任何数据由客户端套接字上写的。结果 我看到的是,第一个的write()尝试(客户端)是成功的,它返回写入的字节的实际数量,而下面的人回报(如我所料) 1 (接收 SIGPIPE )和错误号= EPIPE 。 为什么第一个的write()成功,即使套接字已经关闭? 修改 有时还有以下 ..
发布时间:2016-08-19 13:59:22 C/C++

使用信号和SIGPIPE

我的工作,涉及编写程序用fork(进程)来处理数据(计算圆周率)的分配,信号和选择。 我现在正在正确的信号,我认为我想要做的是,所以如果程序捕获它,它会尝试再次写入管道(如果一个进程试图写入到一个管道使用该SIGPIPE还没有阅读器,它将被发送的SIGPIPE) 我用叉子主()()将它们发送到工人功能每个进程分配相同的工作。 无效工人(INT ID){ ....(这块code是不相关 ..
发布时间:2016-08-18 23:10:06 C/C++

如何prevent SIGPIPEs(或妥善处理)

我必须能够接受对TCP或本地UNIX套接字连接一个小型服务器程序,读取一个简单的命令,并根据命令,发送一个答复。问题是,客户端可能在答案没有兴趣有时候,早退出,所以写到插座会导致一个SIGPIPE,让我的服务器崩溃。什么是prevent这里崩溃的最佳做法?有没有一种方法来检查,如果该行的另一边是还在读书? (选择()似乎并不在这里工作,因为它总是说,插座是可写的)。或者我应该只是赶上了处理程序SI ..
发布时间:2016-08-17 20:33:20 C/C++

无视猛砸pipefail错误code 141

(通过设置-o pipefail )允许,如果非脚本失败设置的bash pipefail 选项落入零误差,那里是一个非零的错误在管道的任何步骤。 不过,我们正在运行到 SIGPIPE 错误(错误code 141),其中数据写入不再存在的管道。 有没有一种方法来设置的bash忽略 SIGPIPE 的错误,或者是有编写错误处理程序将处理所有的错误状态codeS而是一种方法,说,0和141? 例如 ..
发布时间:2016-08-03 11:55:04 Python