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
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé y compris sys/ioctl.h?
Ce code fonctionne pour moi:
Quand j'execute
grep -R FIONBIO /usr/include
, il se trouve ici:Je suis en train de travailler sur un .rpc code
C'est en fait C++, bien que j'ai été en utilisant stdio.h :D. j'ai compilé avec succès à l'aide de g++.
maintenant que c'est déroutant.....pourquoi faut-il garder à défaut pour moi?
Qui distribution utilisez-vous? Si vous exécutez la commande grep -R FIONBIO /usr/include, c'est la macro situé à un certain point?
OriginalL'auteur mfontanini