stderr et stdout sont traitées de manière asynchrone ?
2 réponses
unbewusst.sein
ce matin (beware je n'ai pas bu tout mon café) je constate qu'une sortie
vers stderr arrive avant l'erreur qui l'a produite et qui apparait donc
après sur stdout ?
donc stderr et stdout sont traités, bufferisés de manières asynchrones ?
c'est un peu normal vu que normalement, le gros du flux doit aller sur
stdout et qu'il est plus urgent de reporter les erreurs sur stderr,
c'est le principe ?
--
« Le meilleur moyen de tenir sa parole est de ne jamais la donner. »
(Napoléon Bonaparte)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Éric Lévénez
Le 19/05/10 06:30, Une Bévue a écrit :
ce matin (beware je n'ai pas bu tout mon café) je constate qu'une sortie vers stderr arrive avant l'erreur qui l'a produite et qui apparait donc après sur stdout ?
donc stderr et stdout sont traités, bufferisés de manières asynchrones ?
Oui, stdout est bufferisée par défaut, pas stderr. Voir setbuf et fflush.
c'est un peu normal vu que normalement, le gros du flux doit aller sur stdout et qu'il est plus urgent de reporter les erreurs sur stderr, c'est le principe ?
Oui. Mais ce n'est pas une question d'urgence mis de sécurité. Une sortie bufferisée peut ne pas sortir, comme :
printf("Hello world");
qui n'affichera rien. Ceci tant que le buffer interne ne sera pas plein, tant que l'on aura pas utilisé fflush pour le vider ou tant que l'on n'aura pas un n.
Pour une erreur, on veut l'afficher à coup sûr, et donc pas de bufferisation.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 19/05/10 06:30, Une Bévue a écrit :
ce matin (beware je n'ai pas bu tout mon café) je constate qu'une sortie
vers stderr arrive avant l'erreur qui l'a produite et qui apparait donc
après sur stdout ?
donc stderr et stdout sont traités, bufferisés de manières asynchrones ?
Oui, stdout est bufferisée par défaut, pas stderr. Voir setbuf et fflush.
c'est un peu normal vu que normalement, le gros du flux doit aller sur
stdout et qu'il est plus urgent de reporter les erreurs sur stderr,
c'est le principe ?
Oui. Mais ce n'est pas une question d'urgence mis de sécurité. Une
sortie bufferisée peut ne pas sortir, comme :
printf("Hello world");
qui n'affichera rien. Ceci tant que le buffer interne ne sera pas plein,
tant que l'on aura pas utilisé fflush pour le vider ou tant que l'on
n'aura pas un n.
Pour une erreur, on veut l'afficher à coup sûr, et donc pas de
bufferisation.
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
ce matin (beware je n'ai pas bu tout mon café) je constate qu'une sortie vers stderr arrive avant l'erreur qui l'a produite et qui apparait donc après sur stdout ?
donc stderr et stdout sont traités, bufferisés de manières asynchrones ?
Oui, stdout est bufferisée par défaut, pas stderr. Voir setbuf et fflush.
c'est un peu normal vu que normalement, le gros du flux doit aller sur stdout et qu'il est plus urgent de reporter les erreurs sur stderr, c'est le principe ?
Oui. Mais ce n'est pas une question d'urgence mis de sécurité. Une sortie bufferisée peut ne pas sortir, comme :
printf("Hello world");
qui n'affichera rien. Ceci tant que le buffer interne ne sera pas plein, tant que l'on aura pas utilisé fflush pour le vider ou tant que l'on n'aura pas un n.
Pour une erreur, on veut l'afficher à coup sûr, et donc pas de bufferisation.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
unbewusst.sein
Éric Lévénez wrote:
> donc stderr et stdout sont traités, bufferisés de manières asynchrones ?
Oui, stdout est bufferisée par défaut, pas stderr. Voir setbuf et fflush.
OK, merci beaucoup, setbuf me dit : If a stream refers to a terminal (as stdout normally does), it is line buffered. The standard error stream stderr is always unbuffered. --------------------------^^^^^^----^^^^^^^^^^^^^^^^^
> c'est un peu normal vu que normalement, le gros du flux doit aller sur > stdout et qu'il est plus urgent de reporter les erreurs sur stderr, > c'est le principe ?
Oui. Mais ce n'est pas une question d'urgence mis de sécurité. Une sortie bufferisée peut ne pas sortir, comme :
printf("Hello world");
qui n'affichera rien. Ceci tant que le buffer interne ne sera pas plein, tant que l'on aura pas utilisé fflush pour le vider ou tant que l'on n'aura pas un n.
Pour une erreur, on veut l'afficher à coup sûr, et donc pas de bufferisation.
OK, logique tout ça, c'est pourquoi j'avais pu "l'intuiter"...
-- « Le meilleur moyen de tenir sa parole est de ne jamais la donner. » (Napoléon Bonaparte)
Éric Lévénez <usenet@levenez.com> wrote:
> donc stderr et stdout sont traités, bufferisés de manières asynchrones ?
Oui, stdout est bufferisée par défaut, pas stderr. Voir setbuf et fflush.
OK, merci beaucoup, setbuf me dit :
If a stream refers to a terminal (as stdout normally does),
it is line buffered.
The standard error stream stderr is always unbuffered.
--------------------------^^^^^^----^^^^^^^^^^^^^^^^^
> c'est un peu normal vu que normalement, le gros du flux doit aller sur
> stdout et qu'il est plus urgent de reporter les erreurs sur stderr,
> c'est le principe ?
Oui. Mais ce n'est pas une question d'urgence mis de sécurité. Une
sortie bufferisée peut ne pas sortir, comme :
printf("Hello world");
qui n'affichera rien. Ceci tant que le buffer interne ne sera pas plein,
tant que l'on aura pas utilisé fflush pour le vider ou tant que l'on
n'aura pas un n.
Pour une erreur, on veut l'afficher à coup sûr, et donc pas de
bufferisation.
OK, logique tout ça, c'est pourquoi j'avais pu "l'intuiter"...
--
« Le meilleur moyen de tenir sa parole est de ne jamais la donner. »
(Napoléon Bonaparte)
> donc stderr et stdout sont traités, bufferisés de manières asynchrones ?
Oui, stdout est bufferisée par défaut, pas stderr. Voir setbuf et fflush.
OK, merci beaucoup, setbuf me dit : If a stream refers to a terminal (as stdout normally does), it is line buffered. The standard error stream stderr is always unbuffered. --------------------------^^^^^^----^^^^^^^^^^^^^^^^^
> c'est un peu normal vu que normalement, le gros du flux doit aller sur > stdout et qu'il est plus urgent de reporter les erreurs sur stderr, > c'est le principe ?
Oui. Mais ce n'est pas une question d'urgence mis de sécurité. Une sortie bufferisée peut ne pas sortir, comme :
printf("Hello world");
qui n'affichera rien. Ceci tant que le buffer interne ne sera pas plein, tant que l'on aura pas utilisé fflush pour le vider ou tant que l'on n'aura pas un n.
Pour une erreur, on veut l'afficher à coup sûr, et donc pas de bufferisation.
OK, logique tout ça, c'est pourquoi j'avais pu "l'intuiter"...
-- « Le meilleur moyen de tenir sa parole est de ne jamais la donner. » (Napoléon Bonaparte)