我在 FTP 实现中的打开的数据套接字上使用 write() 来发送文件。但写入一些数据后,它会挂起一段时间;之后它会返回“损坏的管道”错误。对此的任何帮助将不胜感激。我的进程从一个缓冲区读取数据包并写入套接字。我在增加带宽时注意到了这个问题。如果我增加了要处理的数据包数量,那么问题就来了。我正在使用 FreeBSD。
我正在使用两个线程,一个线程读取数据包并将其写入缓冲区...第二个线程从缓冲区读取这些数据包并写入套接字。
感谢您的帮助
亚历山大
SIGPIPE http://en.wikipedia.org/wiki/SIGPIPE当检测到尝试将数据写入损坏的管道时,内核会将其发送到您的进程。例如,如果接收方在写入时关闭了套接字,或者套接字被另一个线程意外关闭等,则可能会发生这种情况。造成这种情况的原因有很多。大多数应用程序倾向于忽略此信号并根据“处理错误”write http://fuse4bsd.creo.hu/localcgi/man-cgi.cgi?write“返回代码,因为您无法做任何合理的事情SIGPIPE http://en.wikipedia.org/wiki/SIGPIPE信号处理处理程序。基本上,设置SIGPIPE http://en.wikipedia.org/wiki/SIGPIPE处理程序到 SIG_IGN 以便忽略它并查看来自“的可能返回代码列表”write http://fuse4bsd.creo.hu/localcgi/man-cgi.cgi?write" 系统调用并相应地处理它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)