6 votes

Pourquoi devons-nous définir la macro _GNU_SOURCE avant d'utiliser l'indicateur d'événement POLLRDHUP dans la fonction poll() ?

J'utilise poll() dans mon programme, je lis ce lien que pour utiliser POLLRDHUP vous devez définir _GNU_SOURCE avant toute inclusion de fichier d'en-tête. J'avais besoin de ce drapeau pour que l'interrogation de la socket puisse me dire si le client a raccroché ou non, afin que je puisse terminer le thread correspondant.

A propos, je suis en train d'écrire un programme C pour un serveur 'echo' qui peut gérer plusieurs clients simultanément, et j'utilise GCC 4.1.2 sur OpenSuse Linux Enterprise Server 10.3 (x86_64).

9voto

user4815162342 Points 27348

POLLRDHUP est une extension non standard (c'est manquant dans POSIX ). Pour éviter de polluer l'espace de noms, les extensions non standard ne sont pas visibles, à moins que vous ne les demandiez explicitement au moyen de la commande définir _GNU_SOURCE .

Plus de détails sur _GNU_SOURCE peut être trouvé dans les réponses précédentes de StackOverflow comme celui-ci .

2voto

Dayal rai Points 4370

_GNU_SOURCE est une fonctionnalité de test des macros qui est utile pour créer des applications portables, en empêchant les définitions non standard d'être exposées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X