溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux下為什么會產生SIGPIPE

發布時間:2021-09-23 09:14:12 來源:億速云 閱讀:193 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“linux下為什么會產生SIGPIPE”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“linux下為什么會產生SIGPIPE”這篇文章吧。

  Brokenpipe:writetopipewithnoreaders.管道破裂。這個信號通常在進程間通信產生,比如采用FIFO(管道)通信的兩個進程,讀管道沒打開或者意外終止就往管道寫,寫進程會收到SIGPIPE信號。此外用Socket通信的兩個進程,寫進程在寫Socket的時候,讀進程已經終止。

  SIGPIPE(Brokenpipe)含義

  其他信號含義,參見:

  linux信號類別/列表-概述

  解決方法

  忽略SIGPIPE信號

  structsigactionsa;

  sa.sa_handler=SIG_IGN;

  sigaction(SIGPIPE,&sa,0);

  調整socket發送函數的flags參數

  設置flags為MSG_NOSIGNAL,實現整個進程(而非僅僅調用的線程)忽略SIGPIPE信號的效果.

  ssize_tsend(intsockfd,constvoid*buf,size_tlen,intflags);

  ssize_tsendto(intsockfd,constvoid*buf,size_tlen,intflags,\

  conststructsockaddr*dest_addr,socklen_taddrlen);

  ssize_tsendmsg(intsockfd,conststructmsghdr*msg,intflags);

  sigpipe參數

  參數flags,指示了send的傳輸數據的方式:

  MSG_CONFIRM提供鏈路層反饋以保持地址映射有效

  MSG_DONTROUTE勿將數據包路由出本地網絡

  MSG_DONTWAIT允許非阻塞行為

  MSG_EOF標記記錄結束

  MSG_MORE允許延遲并寫更多數據

以上是“linux下為什么會產生SIGPIPE”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女