2011-08-08 11 views
1

私はLinux 2.6.38(fc14)を使用しています。ソケットファイルディスクリプタ(例えば、TCPソケット)上の空き容量を取得するためのioctlフラグは何ですか? NetBSDには、このような目的のためにFIONREAD、FIONWRITE、FIONSPACEがあります。しかし、私はLinuxでFIONREADしか使用できませんでした。LinuxでNetBSDのFIONSPACE ioctlに相当するものは何ですか?

答えて

7

SIOCOUTQは、FIONWRITEのLinuxに相当します。私は直接FIONSPACE同等があるとは思わない:代わりにSIOCOUTQによって返される値をソケット送信バッファサイズから引くことができます。これはgetsockopt(s, SOL_SOCKET, SO_SNDBUF, ...)で取得できます。

+0

この計算に従ってソケット送信バッファに余裕があっても書き込み操作がブロックされないという保証はありませんのでご注意ください。実際にカーネル3.2.0では、sendバッファに十分なスペースがあってもsend()でEWOULDBLOCKを取得することがあります。 –

関連する問題