我嘗試在c中開發一個聊天應用程序。我使用插座和select()
。 但是,如果我在客戶端之前關閉服務器,客戶端有一條消息「Broken Pipe」。 我用select(),但我不知道如何避免它?如何避免破損的管道?
3
A
回答
0
註冊PIPE信號的處理程序(也可能忽略信號)。
+0
還有另外一種方法嗎?我不想捕捉信號管 – heruma 2013-04-25 16:23:56
+0
@heruma:您可以使用'SIG_IGN'忽略'SIGPIPE'。只需閱讀手冊頁或其他內容。某些API還支持額外的管道選項,以禁用從內核傳遞「SIGPIPE」。請參閱http://stackoverflow.com/questions/108183/how-to-prevent-sigpipes-or-handle-them-properly – 2013-04-25 16:50:33
4
您可以禁用信號:雖然選擇的答案是忽略信號處理寬,有其他選擇
signal(SIGPIPE, SIG_IGN);
:
使用與MSG_NOSIGNAL發送功能:
send(con, buff_enviar+enviado, length-enviado, MSG_NOSIGNAL);
在套接字級禁用SIGPIPE(不適用於所有內核):
int flag = 1;
setsockopt(con, SOL_SOCKET, SO_NOSIGPIPE, &flag, sizeof(flag));
禁用SIGPIPE支持來電線程(您可以在以後恢復):
sigset_t set;
sigemptyset (&set);
sigaddset (&set, SIGPIPE);
pthread_sigmask(SIG_BLOCK, &set, NULL);
的
相關問題
- 1. PipedInputStream - 如何避免「java.io.IOException:管道損壞」
- 2. 管道破損?
- 3. Java中的httpServer中的管道破損
- 4. Android - JavaPhoenixChannel - EPIPE(破損的管道)
- 5. Win32中的破損管道(WinAPI)
- 6. 如何檢測輸入上的破損管道?
- 7. 如何避免破壞犯CruiseControl.Net
- 8. 如何避免Jenkins多分支管道作業觸發本身
- 9. 如何使用Powershell管道避免大型對象?
- 10. django中的破損管道錯誤的可疑解決方案
- 11. SSL:破損的管道使用PHP的SoapClient訪問SOAP服務
- 12. onBackPressed - 避免破壞活動
- 13. 與套接字連接的破損管道
- 14. 錯誤:[Errno 32] python代碼中的管道破損
- 15. java.net.SocketException:發送失敗:EPIPE(破損的管道)
- 16. 不知道如何避免此類ClassCastException
- 17. Django + WebKit =損壞的管道
- 18. Java SocketException損壞的管道
- 19. android:java.net.SocketException:損壞的管道LG
- 20. Solr異常在服務器中引發org.mortbay.jetty.EofException java.net.SocketException:管道破損
- 21. AdWords API並行報告錯誤(多處理破損管道)
- 22. Eclipse CDT Linuxtools提供了破損管道錯誤
- 23. 如何避免偶爾損壞的下載
- 24. 如何避免
- 25. 避免CSS破解IE8的複選框
- 26. 在軌道上避免STI
- 27. 如何避免使用jenkins管道檢出主節點上的源代碼
- 28. 如何避免Bluemix管道分段中的「設備上沒有剩餘空間」?
- 29. 聚集管道使用$ addToSet的MongoDB避免重複
- 30. 如何同步這些線程以避免數據損壞?
可能重複[如何防止SIGPIPEs(或妥善處理)](http://stackoverflow.com/questions/108183 /如何防止 - sigpipes - 或 - 處理它們 - 正確) – 2013-04-25 16:51:33
不要只關閉管道,很好地說再見。所以另一端也知道要關閉它。 – 2013-04-25 17:00:34