Langage : C.
Plate-forme : linux version 2.6.18-92.el5 (brewbuilder@ls20-bc2-13.build.redhat.com) (gcc version 4.1.2 20071124 (Red Hat 4.1.2-41)) #1 SMP Tue Apr 29 13:16:15 EDT 2008
Compilateur : gcc (GCC) 4.1.2 20071124 (Red Hat 4.1.2-42)
Je suis actuellement en train de debbuger un programme en C qui utilise de l'IPC.
Résultat dans le fichier de logs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 // Librairies utilisées #include <sys/poll.h> #include <stdio.h> #include <fcntl.h> #include <sys/ipc.h> // Programme testé long lFdFichier = open("/USR/tassdt/tmp/FATI999", O_CREAT, DROIT_LIRE_ECRIRE); long fatTest= msgget ((ftok("/USR/tassdt/tmp/FATI999", 'a')), IPC_CREAT | DROIT_LIRE_ECRIRE ); struct pollfd DescripteurEvtFat; long lCrPollFat; DescripteurEvtFat.fd = fatTest; DescripteurEvtFat.events = POLLIN | POLLERR; // JBG : POLLIN 0x0001 + POLLERR 0x0008 font bien 9. /!\revents are bitmasks constructed by OR'ing a combination of the following event flags. DescripteurEvtFat.revents = 0; lCrPollFat = poll (&DescripteurEvtFat, 1, 10 ); // Traitement du file descripteur. fTracer ( NV_DEBUG, "JBG", ( pFicTrc, "Reception d'un message FAT lCrPollFat=%ld fd=%ld events=%d revents=%d strerrno=%s",lCrPollFat, DescripteurEvtFat.fd, DescripteurEvtFat.events, DescripteurEvtFat.revents, strerror(errno)));
-------------------------------------
Problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 210312 11:35:29.141 JBG Reception d'un message FAT lCrPollFat=1 fd=560431106 events=9 revents=32 strerrno=Success
------------
Le problème est que le champ "revents" de la structure "pollfd" est à 32 dès le départ malgré que je le force à 0, comme si il était bloqué.
Avez-vous une idée de l'origine du problème, car nous sommes presque sûrs de l'écriture de ce code ?
Jean-Baptiste.
Partager