web-dev-qa-db-ja.com

C ++ソケットの送信/受信と書き込み/読み取り

ソケットssize_t send(int __fd, const void* __buf, size_t __n, int __flags)で、この__flags引数を取得しました。すべての接続でMSG_NOSIGNALフラグを使用しています。 writeでこのフラグ機能を実現する方法はありますか?このフラグは接続全体で使用しているため、socketの作成時に設定できます。すべての__flag関数を実現する方法がある場合は、お気軽にお知らせください。

21
Necktwi

いいえ。writeを使用してソケットに書き込む場合、send引数をゼロに設定してflagsを呼び出すのと同じです。

公式POSIXリファレンス から

fildesがソケットを参照する場合、write()send() フラグが設定されていません。


ただし、このフラグを永続的に「設定」する方法があり、SIGPIPE信号を無視します。

signal(SIGPIPE, SIG_IGN);
36