如何注入“断管”错误?

时间:2013-08-23 17:54:42

标签: sockets networking tcp

我正在为使用TCP套接字的网络程序运行测试。为了验证错误修复,我需要在套接字层重现“Broken pipe”错误,但我不知道如何。任何的想法?非常感谢。

3 个答案:

答案 0 :(得分:2)

'Broken pipe'表示您已写入已被对等方关闭的连接。所以,让对等点关闭连接。

答案 1 :(得分:0)

A"断管"错误消息通常来自shell,当它检测到它创建的子节点由于SIGPIPE信号而退出时。因此,您可以通过使用SIGPIPE(kill -PIPE %1)杀死第一个背景命令的孩子来手动创建一个。

SIGPIPE由内核生成并发送到任何尝试在另一端关闭后尝试写入管道或套接字的进程。

答案 2 :(得分:0)

我环顾四周,无法在任何地方找到记录的程序,所以你走了。

我在ssh配置中找到了一个服务器,它使用的是' nc'代理命令。

  

主机服务器

     
    

ProxyCommand / usr / bin / nc -4 -n -X 5 -x 127.0.0.1:55555%h%p

  

我运行了一个ssh,ServerAlive选项设置为1:

  

> ssh -o ServerAliveInterval = 1 -o ServerAliveCountMax = 1 e3prosup @ server

然后在另一场会议中,我找到了' nc'与ssh相关的进程并将其杀死。 kill -9(SIGKILL)或kill -13(SIGPIPE)都可以。

  

> ps -efa

     
    

e3prosup 19502 10955 0 11:43 pts / 6 00:00:00 ssh -o ServerAliveInterval = 1 -o ServerAliveCountMax = 1 e3prosup @ server

         

e3prosup 19503 19502 0 11:43 pts / 6 00:00:00 / usr / bin / nc -4 -n -X 5 -x 127.0.0.1:55555 server 22

  
     

>杀死-13 19503

现在ssh会话得到:

  
    

e3prosup @服务器>写入失败:管道损坏