Problèmes bizarres de lecture dans un pipe (en C).

Liste des GroupesRevenir à fcol configuration 
Sujet : Problèmes bizarres de lecture dans un pipe (en C).
De : om+news (at) *nospam* miakinen.net (Olivier Miakinen)
Groupes : fr.comp.os.linux.configuration
Date : 13. Dec 2022, 19:00:33
Autres entêtes
Organisation : There's no cabale
Message-ID : <tnab3h$h7v$1@cabale.usenet-fr.net>
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0 SeaMonkey/2.53.1
Bonjour,

Le problème rencontré est sur un RedHat 7.8 avec un noyau dans la
version 5.4.103-1.el7.elrepo.x86_64.

Un process père et son fils communiquent au moyen d'un tube non nommé
créé par le père avant un fork(), par la commande pipe(). Le fils écrit
dans le pipe plus vite que le père ne le lit.

Il y a en fait deux problèmes, un qui n'est pas très grave, un autre
qui est bien plus problématique.

1er problème : lorsque le père fait un read() avec un paramètre count
qui est plus grand que PIPE_BUF (c.-à-d. 4096), bien que le fils ait
déjà écrit beaucoup plus d'octets que ça, seuls PIPE_BUF octets sont
retournés par la commande read().

2e problème plus grave : lorsque le père fait un read() avec un count
qui est plus *petit* que PIPE_BUF, ce sont bien seulement 'count'
octets qui lui sont retournés, mais au total PIPE_BUF octets sont
effacés du pipe ! Les (PIPE_BUF − count) octets restants sont perdus
et ne seront jamais récupérés par le père lors des read() suivants.

Je n'ai pas réussi à trouver de trace de ce bug dans les changelogs
des différentes versions du noyau, mais à vrai dire je ne sais pas
trop comment faire ma recherche. Est-ce que quelqu'un saurait mieux
que moi comment le retrouver, savoir s'il a été corrigé dans une
version ultérieure, etc. ? J'aimerais que le client essaye avec une
autre version du noyau, mais sa machine est en production alors ce
n'est sans doute pas très facile.

Cordialement,
--
Olivier Miakinen

Date Sujet#  Auteur
13 Dec 22 * Problèmes bizarres de lecture dans un pipe (en C).9Olivier Miakinen
13 Dec 22 +* Re: Problèmes bizarres de lecture dans un pipe (en C).7Nicolas George
13 Dec 22 i`* Re: Problèmes bizarres de lecture dans un pipe (en C).6Olivier Miakinen
13 Dec 22 i +- Re: Problèmes bizarres de lecture dans un pipe (en C).1Olivier Miakinen
14 Dec 22 i `* Re: Problèmes bizarres de lecture dans un pipe (en C).4Nicolas George
14 Dec 22 i  `* Re: Problèmes bizarres de lecture dans un pipe (en C).3Olivier Miakinen
14 Dec 22 i   `* Re: Problèmes bizarres de lecture dans un pipe (en C).2Nicolas George
14 Dec 22 i    `- Re: Problèmes bizarres de lecture dans un pipe (en C).1Olivier Miakinen
19 Dec 22 `- Bonne nouvelle (was: Problèmes bizarres de lecture dans un pipe (en C).)1Olivier Miakinen

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal