如何防止SIGPIPE(或妥善處理)我有一個小型服務器程序,它接受TCP或本地UNIX套接字上的連接,讀取一個簡單的命令,并根據(jù)命令發(fā)送答復。問題是,客戶端有時可能對答案不感興趣,并且提前退出,因此向該套接字寫入將導致SIGPIPE并使我的服務器崩潰。防止墜機的最佳方法是什么?有沒有辦法檢查另一邊是否還在讀?(select()在這里似乎不起作用,因為它總是說套接字是可寫的)?;蛘呶覒撚靡粋€處理程序捕獲SIGPIPE并忽略它嗎?
3 回答

www說
TA貢獻1775條經(jīng)驗 獲得超8個贊
SIGPIPE
SIGPIPE
SIG_IGN
SIGPIPE
SIGPIPE
signal(SIGPIPE, SIG_IGN);
send()
MSG_NOSIGNAL
SIGPIPE
MSG_NOSIGNAL
SO_SIGNOPIPE
setsockopt()
SIGPIPE

楊魅力
TA貢獻1811條經(jīng)驗 獲得超6個贊
int set = 1;setsockopt(sd, SOL_SOCKET, SO_NOSIGPIPE, (void *)&set, sizeof(int));
- 3 回答
- 0 關注
- 1954 瀏覽
添加回答
舉報
0/150
提交
取消