le portage d'appels ioctl() à partir d'unix vers linux, erreur avec FIONBIO

je veux utiliser ioctl() pour obtenir le nombre d'octets prêt à être lu

le chemin que j'ai fait c'est:

mysocket=socket(....);
ioctl(mysocket, FIONBIO, &zero);    
connect(.....);
ioctl( mysocket, FIONREAD, &numBytes );
read(mysocket, buffer, numBytes);

cela fonctionnait bien sous unix, maintenant, j'ai de port à linux
je reçois l'ERREUR

erreur: 'FIONBIO" n'a pas été déclarée dans le champ d'application

Est-il un fichier d'en-tête spécifiques pour linux? ou "FIOBIO' ne fonctionne pas du tout sous linux?

J'ai en-têtes suivants inclus:

#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>

et j'ai enlevé

#include <sys/filio.h>

depuis il jetait des erreurs en disant sys/filio.h ne trouve pas

Qui distro est-il porté?

OriginalL'auteur maheshg | 2012-03-07