ioctl() を使用して、読み取り可能なバイト数を取得したい
私がやった方法は次のとおりです。
mysocket=socket(....);
ioctl(mysocket, FIONBIO, &zero);
connect(.....);
ioctl( mysocket, FIONREAD, &numBytes );
read(mysocket, buffer, numBytes);
これは unix では問題なく動作していましたが、今度は Linux に移植する必要があります。エラーが発生し続けます。
エラー: 'FIONBIO' はこのスコープで宣言されていません
Linux に固有のヘッダー ファイルはありますか? または 'FIOBIO' が Linux でまったく動作しませんか?
次のヘッダーが含まれています。
#include <cstring>
#include <sys/socket.h>
#include <stropts.h>
#include <fcntl.h>
#include <stddef.h>
#include <sys/un.h>
#include <sys/types.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <sys/select.h>
#include <fstream>
そして私は削除しました
#include <sys/filio.h>
sys/filio.hが見つからないというエラーをスローしていたため