perkamon - en to fr translation catalogue (50 entries)

note: type: TH
en: 2019-03-06
fr: 6 mars 2019

note: type: TH
en: Linux Programmer's Manual
fr: Manuel du programmeur Linux

note: type: SH
en: NAME
fr: NOM

note: type: Plain text
en: select, pselect, FD_CLR, FD_ISSET, FD_SET, FD_ZERO - synchronous I/O multiplexing
fr: select, pselect, FD_CLR, FD_ISSET, FD_SET, FD_ZERO - Multiplexage d'entrées-sorties synchrones

note: type: Plain text
en: Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):
fr: Exigences de macros de test de fonctionnalités pour la glibc (consultez B<feature_test_macros>(7)) :

note: type: Plain text
en: Its principal arguments are three "sets" of file descriptors: I<readfds>, I<writefds>, and I<exceptfds>.  Each set is declared as type I<fd_set>, and its contents can be manipulated with the macros B<FD_CLR>(), B<FD_ISSET>(), B<FD_SET>(), and B<FD_ZERO>().  A newly declared set should first be cleared using B<FD_ZERO>().  B<select>()  modifies the contents of the sets according to the rules described below; after calling B<select>()  you can test if a file descriptor is still present in a set with the B<FD_ISSET>()  macro.  B<FD_ISSET>()  returns nonzero if a specified file descriptor is present in a set and zero if it is not.  B<FD_CLR>()  removes a file descriptor from a set.
fr: Ses paramètres principaux sont trois « ensembles » de descripteurs de fichiers : I<readfds>, I<writefds> et I<exceptfds>. Chaque ensemble est de type I<fd_set>, et son contenu peut être manipulé avec les macros B<FD_CLR>(), B<FD_ISSET>(), B<FD_SET>(), et B<FD_ZERO>(). Un ensemble nouvellement déclaré doit d'abord être effacé en utilisant B<FD_ZERO>(). B<select>() modifie le contenu de ces ensembles selon les règles ci-dessous. Après un appel à B<select>(), vous pouvez vérifier si un descripteur de fichier est toujours présent dans l'ensemble à l'aide de la macro B<FD_ISSET>(). B<FD_ISSET>() renvoie une valeur non nulle si un descripteur de fichier indiqué est présent dans un ensemble et zéro s'il ne l'est pas. B<FD_CLR>() retire un descripteur de fichier d'un ensemble.

note: type: Plain text
en: This set is watched to see if data is available for reading from any of its file descriptors.  After B<select>()  has returned, I<readfds> will be cleared of all file descriptors except for those that are immediately available for reading.
fr: Cet ensemble est examiné afin de déterminer si des données sont disponibles en lecture à partir d'un de ses descripteurs de fichier. Suite à un appel à B<select>(), I<readfds> ne contient plus aucun de ses descripteurs de fichiers à l'exception de ceux qui sont immédiatement disponibles pour une lecture.

note: type: Plain text
en: This set is watched to see if there is space to write data to any of its file descriptors.  After B<select>()  has returned, I<writefds> will be cleared of all file descriptors except for those that are immediately available for writing.
fr: Cet ensemble est examiné afin de déterminer s'il y a de l'espace afin d'écrire des données dans un de ses descripteurs de fichier. Suite à un appel à B<select>(), I<writefds> ne contient plus aucun de ses descripteurs de fichiers à l'exception de ceux qui sont immédiatement disponibles pour une écriture.

note: type: Plain text
en: This is an integer one more than the maximum of any file descriptor in any of the sets.  In other words, while adding file descriptors to each of the sets, you must calculate the maximum integer value of all of them, then increment this value by one, and then pass this as I<nfds>.
fr: Il s'agit d'un entier valant un de plus que n'importe lequel des descripteurs de fichier de tous les ensembles. En d'autres termes, lorsque vous ajoutez des descripteurs de fichier à chacun des ensembles, vous devez déterminer la valeur entière maximale de tous ces derniers, puis ajouter un à cette valeur, et la passer comme paramètre I<nfds>.

note: type: Plain text
en: This is the longest time B<select>()  may wait before returning, even if nothing interesting happened.  If this value is passed as NULL, then B<select>()  blocks indefinitely waiting for a file descriptor to become ready.  I<utimeout> can be set to zero seconds, which causes B<select>()  to return immediately, with information about the readiness of file descriptors at the time of the call.  The structure I<struct timeval> is defined as:
fr: Il s'agit du temps le plus long que B<select>() pourrait attendre avant de rendre la main, même si rien d'intéressant n'est arrivé. Si cette valeur est positionnée à NULL, alors, B<select>() bloque indéfiniment dans l'attente qu'un descripteur de fichier devienne prêt. I<utimeout> peut être positionné à zéro seconde, ce qui provoque le retour immédiat de B<select>(), en indiquant quels descripteurs de fichiers étaient prêts au moment de l'appel. La structure I<struct timeval> est définie comme :

note: type: Plain text
en: struct timeval {
        time_t tv_sec;    /* seconds */
        long tv_usec;     /* microseconds */
    };
fr: struct timeval {
        time_t tv_sec;    /* secondes */
        long tv_usec;     /* microsecondes */
    };

note: type: Plain text
en: This argument for B<pselect>()  has the same meaning as I<utimeout>, but I<struct timespec> has nanosecond precision as follows:
fr: Ce paramètre de B<pselect>() a la même signification que I<utimeout>, mais I<struct timespec> a une précision à la nanoseconde comme explicité ci-dessous\ :

note: type: Plain text
en: struct timespec {
        long tv_sec;    /* seconds */
        long tv_nsec;   /* nanoseconds */
    };
fr: struct timespec {
        long tv_sec;    /* secondes */
        long tv_nsec;   /* nanosecondes */
    };

note: type: Plain text
en: This argument holds a set of signals that the kernel should unblock (i.e., remove from the signal mask of the calling thread), while the caller is blocked inside the B<pselect>()  call (see B<sigaddset>(3)  and B<sigprocmask>(2)).  It may be NULL, in which case the call does not modify the signal mask on entry and exit to the function.  In this case, B<pselect>()  will then behave just like B<select>().
fr: Cet argument renferme un ensemble de signaux que le noyau doit débloquer (c'est-à-dire supprimer du masque de signaux du thread appelant) pendant que l'appelant est bloqué par B<pselect>() (consultez B<sigaddset>(3) et B<sigprocmask>(2)). Il peut valoir NULL et, dans ce cas, il ne modifie pas l'ensemble des signaux non bloqués à l'entrée et la sortie de la fonction. Dans ce cas, B<pselect>() se comporte alors de façon identique à B<select>().

note: type: SS
en: Combining signal and data events
fr: Combinaison d'événements de signaux et de données

note: type: Plain text
en:     for (;;) {          /* main loop */
            /* Initialize readfds, writefds, and exceptfds
               before the pselect() call. (Code omitted.) */
fr:     for (;;) {          /* main loop */
            /* Initialiser readfds, writefds et exceptfds
               avant l'appel à pselect(). (Code omis.) */

note: type: Plain text
en:         r = pselect(nfds, &readfds, &writefds, &exceptfds,
                        NULL, &empty_mask);
            if (r == -1 && errno != EINTR) {
                /* Handle error */
            }
fr:         r = pselect(nfds, &readfds, &writefds, &exceptfds,
                        NULL, &empty_mask);
            if (r == -1 && errno != EINTR) {
                /* Gérer les erreurs */
            }

note: type: Plain text
en:             /* Handle signalled event here; e.g., wait() for all
                   terminated children. (Code omitted.) */
            }
fr:             /* Gérer les événements signalés ici; e.g., wait() pour
                   que tous les fils se terminent. (Code omis.) */
            }

note: type: Plain text
en:         /* main body of program */
        }
    }
fr:         /* corps principal du programme */
        }
    }

note: type: SS
en: Practical
fr: Pratique

note: type: SS
en: Select law
fr: Règles de select

note: type: Plain text
en: Many people who try to use B<select>()  come across behavior that is difficult to understand and produces nonportable or borderline results.  For instance, the above program is carefully written not to block at any point, even though it does not set its file descriptors to nonblocking mode.  It is easy to introduce subtle errors that will remove the advantage of using B<select>(), so here is a list of essentials to watch for when using B<select>().
fr: De nombreuses personnes qui essaient d'utiliser B<select>() obtiennent un comportement difficile à comprendre et produisent des résultats non portables ou des effets de bord. Par exemple, le programme ci-dessus est écrit avec précaution afin de ne bloquer nulle part, même s'il ne positionne pas ses descripteurs de fichier en mode non bloquant.Il est facile d'introduire des erreurs subtiles qui annuleraient l'avantage de l'utilisation de B<select>(), aussi, voici une liste de points essentiels à contrôler lors de l'utilisation de B<select>().

note: type: Plain text
en: You should always try to use B<select>()  without a timeout.  Your program should have nothing to do if there is no data available.  Code that depends on timeouts is not usually portable and is difficult to debug.
fr: Vous devriez toujours essayer d'utiliser B<select>() sans timeout. Votre programme ne devrait rien avoir à faire s'il n'y a pas de données disponibles. Le code dépendant de timeouts n'est en général pas portable et difficile à déboguer.

note: type: Plain text
en: The value I<nfds> must be properly calculated for efficiency as explained above.
fr: La valeur I<nfds> doit être calculée correctement pour des raisons d'efficacité comme expliqué plus haut.

note: type: Plain text
en: No file descriptor must be added to any set if you do not intend to check its result after the B<select>()  call, and respond appropriately.  See next rule.
fr: Aucun descripteur de fichier ne doit être ajouté à un quelconque ensemble si vous ne projetez pas de vérifier son état après un appel à B<select>(), et de réagir de façon adéquate. Voir la règle suivante.

note: type: Plain text
en: After B<select>()  returns, all file descriptors in all sets should be checked to see if they are ready.
fr: Après le retour de B<select>(), tous les descripteurs de fichier dans tous les ensembles devraient être testés pour savoir s'ils sont prêts.

note: type: Plain text
en: The functions B<read>(2), B<recv>(2), B<write>(2), and B<send>(2)  do I<not> necessarily read/write the full amount of data that you have requested.  If they do read/write the full amount, it's because you have a low traffic load and a fast stream.  This is not always going to be the case.  You should cope with the case of your functions managing to send or receive only a single byte.
fr: Les fonctions B<read>(2), B<recv>(2), B<write>(2) et B<send>(2) ne lisent ou n'écrivent I<pas> forcément la quantité totale de données spécifiée. Si elles lisent/écrivent la quantité totale, c'est parce que vous avez une faible charge de trafic et un flux rapide. Ce n'est pas toujours le cas. Vous devriez gérer le cas où vos fonctions traitent seulement l'envoi ou la réception d'un unique octet.

note: type: Plain text
en: Never read/write only in single bytes at a time unless you are really sure that you have a small amount of data to process.  It is extremely inefficient not to read/write as much data as you can buffer each time.  The buffers in the example below are 1024 bytes although they could easily be made larger.
fr: Ne lisez/n'écrivez jamais seulement quelques octets à la fois à moins que vous ne soyez absolument sûr de n'avoir qu'une faible quantité de données à traiter. Il est parfaitement inefficace de ne pas lire/écrire autant de données que vous pouvez en stocker à chaque fois. Les tampons de l'exemple ci-dessous font 1024 octets bien qu'ils aient facilement pu être rendus plus grands.

note: type: Plain text
en: Never call B<read>(2), B<recv>(2), B<write>(2), or B<send>(2)  with a buffer length of zero.
fr: N'appelez jamais B<read>(2), B<recv>(2), B<write>(2) ou B<send>(2) avec un tampon de taille nulle.

note: type: Plain text
en: The timeout value must be initialized with each new call to B<select>(), since some operating systems modify the structure.  B<pselect>()  however does not modify its timeout structure.
fr: La valeur de timeout doit être initialisée à chaque nouvel appel à B<select>(), puisque des systèmes d'exploitation modifient la structure. Cependant, B<pselect>() ne modifie pas sa structure de timeout.

note: "I have heard" does not fill me with confidence, and doesn't belong in a man page, so I've commented this point out. .TP 11. I have heard that the Windows socket layer does not cope with OOB data properly. It also does not cope with .BR select () calls when no file descriptors are set at all. Having
en: Since B<select>()  modifies its file descriptor sets, if the call is being used in a loop, then the sets must be reinitialized before each call.
fr: Comme B<select>() modifie ses ensembles de descripteurs de fichiers, si l'appel est effectué dans une boucle alors les ensembles doivent être réinitialisés avant chaque appel.

note: type: SS
en: Usleep emulation
fr: Émulation de usleep

note: type: Plain text
en: On systems that do not have a B<usleep>(3)  function, you can call B<select>()  with a finite timeout and no file descriptors as follows:
fr: Sur les systèmes qui ne possèdent pas la fonction B<usleep>(3), vous pouvez appeler B<select>() avec un timeout à valeur finie et sans descripteur de fichier de la façon suivante\ :

note: type: Plain text
en: This is guaranteed to work only on UNIX systems, however.
fr: Le fonctionnement n'est cependant garanti que sur les systèmes UNIX.

note: type: SH
en: RETURN VALUE
fr: VALEUR DE RETOUR

note: type: Plain text
en: On success, B<select>()  returns the total number of file descriptors still present in the file descriptor sets.
fr: En cas de succès, B<select>() renvoie le nombre total de descripteurs de fichiers encore présents dans les ensembles de descripteurs de fichier.

note: type: Plain text
en: If B<select>()  timed out, then the return value will be zero.  The file descriptors set should be all empty (but may not be on some systems).
fr: En cas de timeout échu, alors les descripteurs de fichier devraient tous être vides (mais peuvent ne pas l'être sur certains systèmes). Par contre, la valeur renvoyée est zéro.

note: type: Plain text
en: A return value of -1 indicates an error, with I<errno> being set appropriately.  In the case of an error, the contents of the returned sets and the I<struct timeout> contents are undefined and should not be used.  B<pselect>()  however never modifies I<ntimeout>.
fr: Une valeur de retour égale à -1 indique une erreur, I<errno> est alors positionné de façon adéquate. En cas d'erreur, le contenu des ensembles renvoyés et le contenu de la structure de I<timeout> sont indéfinis et ne devraient pas être exploités. B<pselect>() ne modifie cependant jamais I<ntimeout>.

note: type: Plain text
en: Generally speaking, all operating systems that support sockets also support B<select>().  B<select>()  can be used to solve many problems in a portable and efficient way that naive programmers try to solve in a more complicated manner using threads, forking, IPCs, signals, memory sharing, and so on.
fr: De façon générale, tous les systèmes d'exploitation qui gèrent les sockets proposent également B<select>(). B<select>() peut être utilisé pour résoudre de façon portable et efficace de nombreux problèmes que des programmeurs naïfs essaient de résoudre avec des threads, des forks, des IPC, des signaux, des mémoires partagées et d'autres méthodes peu élégantes.

note: type: Plain text
en: The B<poll>(2)  system call has the same functionality as B<select>(), and is somewhat more efficient when monitoring sparse file descriptor sets.  It is nowadays widely available, but historically was less portable than B<select>().
fr: L'appel système B<poll>(2) a les mêmes fonctionnalités que B<select>(), tout en étant légèrement plus efficace quand il doit surveiller des ensembles de descripteurs creux. Il est disponible sur la plupart des systèmes de nos jours, mais était historiquement moins portable que B<select>().

note: type: Plain text
en: The Linux-specific B<epoll>(7)  API provides an interface that is more efficient than B<select>(2)  and B<poll>(2)  when monitoring large numbers of file descriptors.
fr: L'API B<epoll>(7) spécifique à Linux fournit une interface plus efficace que B<select>(2) et B<poll>(2) lorsque l'on surveille un grand nombre de descripteurs de fichier.

note: type: SH
en: EXAMPLE
fr: EXEMPLE

note: type: Plain text
en: Here is an example that better demonstrates the true utility of B<select>().  The listing below is a TCP forwarding program that forwards from one TCP port to another.
fr: Voici un exemple qui montre mieux l'utilité réelle de B<select>(). Le code ci-dessous consiste en un programme de «\ TCP forwarding\ » qui redirige un port TCP vers un autre.

note: type: Plain text
en:     if (argc != 4) {
            fprintf(stderr, "Usage\en\etfwd E<lt>listen-portE<gt> "
                     "E<lt>forward-to-portE<gt> E<lt>forward-to-ip-addressE<gt>\en");
            exit(EXIT_FAILURE);
        }
fr:     if (argc != 4) {
            fprintf(stderr, "Utilisation\en\etfwd E<lt>listen-portE<gt> "
                     "E<lt>forward-to-portE<gt> E<lt>forward-to-ip-addressE<gt>\en");
            exit(EXIT_FAILURE);
        }

note: type: Plain text
en: The above program properly forwards most kinds of TCP connections including OOB signal data transmitted by B<telnet> servers.  It handles the tricky problem of having data flow in both directions simultaneously.  You might think it more efficient to use a B<fork>(2)  call and devote a thread to each stream.  This becomes more tricky than you might suspect.  Another idea is to set nonblocking I/O using B<fcntl>(2).  This also has its problems because you end up using inefficient timeouts.
fr: Le programme ci-dessus redirige correctement la plupart des types de connexions TCP y compris les signaux de données hors bande OOB transmis par les serveurs B<telnet>. Il gère le problème épineux des flux de données bidirectionnels simultanés. Vous pourriez penser qu'il est plus efficace d'utiliser un appel B<fork>(2) et de dédier une tâche à chaque flux. Cela devient alors plus délicat que vous ne l'imaginez. Une autre idée est de configurer les entrées-sorties comme non bloquantes en utilisant B<fcntl>(2). Cela pose également problème puisque ça vous force à utiliser des timeouts inefficaces.

note: type: Plain text
en: The program does not handle more than one simultaneous connection at a time, although it could easily be extended to do this with a linked list of buffers\(emone for each connection.  At the moment, new connections cause the current connection to be dropped.
fr: Le programme ne gère pas plus d'une connexion à la fois bien qu'il soit aisément extensible à une telle fonctionnalité en utilisant une liste chaînée de tampons \(em un pour chaque connexion. Pour l'instant, de nouvelles connexions provoquent l'abandon de la connexion courante.

note: type: SH
en: SEE ALSO
fr: VOIR AUSSI

note: type: Plain text
en: This page is part of release 5.03 of the Linux I<man-pages> project.  A description of the project, information about reporting bugs, and the latest version of this page, can be found at \%https://www.kernel.org/doc/man-pages/.
fr: Cette page fait partie de la publication 5.03 du projet I<man-pages> Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse \%https://www.kernel.org/doc/man-pages/.

note: type: Plain text
en: This page is part of release 5.02 of the Linux I<man-pages> project.  A description of the project, information about reporting bugs, and the latest version of this page, can be found at \%https://www.kernel.org/doc/man-pages/.
fr: Cette page fait partie de la publication 5.02 du projet I<man-pages> Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse \%https://www.kernel.org/doc/man-pages/.

note: type: Plain text
en: This page is part of release 5.01 of the Linux I<man-pages> project.  A description of the project, information about reporting bugs, and the latest version of this page, can be found at \%https://www.kernel.org/doc/man-pages/.
fr: Cette page fait partie de la publication 5.01 du projet I<man-pages> Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse \%https://www.kernel.org/doc/man-pages/.
