ALT Linux Community general discussions
 help / color / mirror / Atom feed
From: Valentin Nechayev <netch@netch.kiev.ua>
To: community@altlinux.ru
Subject: Re: [Comm] Почему буферизация меняет порядок выводимых в файл строк?
Date: Sun, 27 Oct 2002 12:53:50 +0200
Message-ID: <20021027105349.GA40639@netch.kiev.ua> (raw)
In-Reply-To: <18541747015.20021025212014@fastmail.fm>

 Fri, Oct 25, 2002 at 21:20:14, useperl wrote about "[Comm] Почему буферизация меняет порядок выводимых в файл строк?": 

> From: Henri Bourbon <useperl@fastmail.fm>
> Да,   в  свое  время меня очень обескуражил этот эффект. Теперь с этим я
> разобрался,  непонятно  же  другое:  почему  буферизация  может поменять
> *порядок* выводимых в файл строк. Поясняю:

Могут быть и более странные эффекты.
Дело в том, что если буфера не сброшены явно, то они сбрасываются при
выполнении exit(). А обычно libc построена так, что они сбрасываются
в порядке обратном стандартному порядку перечисления, то есть stderr
сбрасывается раньше, чем stdout.

У Вас слишком простой тест был. Вот более навороченный:

$ perl -we 'print "1-STDOUT\n"; warn "2-STDERR\n"; print "1-STDOUT\n"; warn "2-STDERR\n";'
1-STDOUT
2-STDERR
1-STDOUT
2-STDERR
$ perl -we 'print "1-STDOUT\n"; warn "2-STDERR\n"; print "1-STDOUT\n"; warn "2-STDERR\n";' 2>&1 | cat
2-STDERR
2-STDERR
1-STDOUT
1-STDOUT

Это подтверждает то, что я описал в дополнение к описанному ранее:
1. Из-за того, что не терминал, а пайп - буферизация идет поблочно, а не
построчно.
2. Блоки для stdout и stderr разные.
3. Буфер для stderr сбрасывается раньше.

А еще веселее получается, если stdout и stderr направлены в один пайп,
а вывода по каждому из них больше чем стандартный размер буфера (обычно 4K,
AFAIR). Когда буфер сбрасывается не по exit(), строки могут быть разрезаны
пополам.

На логи make это обычно не влияет потому, что от каждого процесса
выдача короткая. Но тоже бывает (если, например, много ошибок и много
нормального вывода).


/netch


  parent reply	other threads:[~2002-10-27 10:53 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-10-25 12:58 [Comm] перенаправление вывода в лог Sinom
2002-10-25 13:07 ` Sergey Vlasov
2002-10-25 13:15 ` Слава Гарелин
2002-10-25 13:34   ` Андрей Булава
2002-10-25 15:09     ` Sinom
2002-10-25 15:31       ` Re[2]: [Comm] ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÅ ×Ù×ÏÄÁ × ÌÏÇ ASA
2002-10-25 15:40         ` Re[3]: " ASA
2002-10-25 16:05         ` Re[2]: [Comm] перенаправление вывода в лог Sinom
2002-10-25 16:26           ` Re[4]: [Comm] ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÅ ×Ù×ÏÄÁ × ÌÏÇ ASA
2002-10-25 16:57             ` Re[4]: [Comm] перенаправление вывода в лог Sinom
2002-10-25 17:37               ` Re[6]: [Comm] ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÅ ×Ù×ÏÄÁ × ÌÏÇ ASA
2002-10-25 19:50                 ` [Comm] перенаправление вывода в лог Anton Kovalenko
2002-10-26 10:20                   ` Re[2]: [Comm] ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÅ ×Ù×ÏÄÁ × ÌÏÇ ASA
2002-10-26 11:49                   ` [Comm] перенаправление вывода в лог Sinom
2002-10-26 23:11                     ` Anton Kovalenko
2002-10-28  7:16         ` [Comm] Re: РЕТЕОБРТБЧМЕОЙЕ ЧЩЧПДБ Ч МПЗ Vitaly Ostanin
2002-10-28  8:23           ` [Comm] Re: [JT] Re: òåôåïâòôâþíåïêå þýþðäâ þ íðú ASA
2002-10-28  8:41             ` [Comm] Re: тефепвтфвюнепке юэюрдв ю нръ Vitaly Ostanin
2002-10-28  8:54               ` [Comm] Re: [JT] Так лучше? ASA
2002-10-28  9:14                 ` Maxim Tyurin
2002-10-28  9:44                 ` W.Kondratev
2002-10-28 10:22                 ` Vitaly Ostanin
2002-10-28 12:06                 ` sam
2002-10-28 13:28                 ` Ruslan N. Balkin
2002-10-28 14:05                   ` [Comm] Re[2]: " ASA
2002-10-28 14:18                     ` Dmitry E. Oboukhov
2002-10-28 14:30                       ` [Comm] Re[2]: " ASA
2002-10-28 14:42                         ` [Comm] " Dmitry E. Oboukhov
2002-10-28 14:53                           ` [Comm] " ASA
2002-10-28 15:23                             ` [Comm] " Dmitry E. Oboukhov
2002-10-28 15:54                               ` [Comm] " ASA
2002-10-28 16:07                                 ` [Comm] " Dmitry E. Oboukhov
2002-10-28 16:44                                   ` Sergey Vlasov
2002-10-28 16:53                                     ` [Comm] " ASA
2002-10-28 17:41                                       ` [Comm] " Sergey Vlasov
2002-10-28 17:57                                         ` [Comm] Re[2]: " ASA
2002-10-28 15:02                         ` [Comm] Re[2]: [Comm] Re[2]: [Comm] " Ruslan N. Balkin
2002-10-28 18:04                         ` [Comm] MIME в звголовке - " Valentin Nechayev
2002-10-28 14:56                     ` Sergey Vlasov
2002-10-28 15:25                       ` [Comm] Re[2]: " ASA
2002-10-29  7:55                         ` Vitaly Ostanin
2002-10-29  8:31                           ` [Comm] " ASA
2002-10-29  9:00                             ` Vitaly Ostanin
2002-10-28 14:13                   ` Vitaly Ostanin
2002-10-28  9:45               ` [Comm] Re: тефепвтфвюнепке юэюрдв ю нръ Andrey Golovin
2002-10-28  8:59                 ` [Comm] Re[2]: [Comm] Заголовок выпрямил ASA
2002-10-28 11:12                   ` Andrey Golovin
2002-10-28  9:39             ` [Comm] Re: [JT] Re: РЕТЕОБРТБЧМЕОЙЕ ЧЩЧПДБ Ч МПЗ Anton Kovalenko
2002-10-28 10:19               ` [Comm] Re[2]: " ASA
2002-10-28 10:25                 ` Vitaly Ostanin
2002-10-28 17:56             ` [Comm] MIME в заголовках - " Valentin Nechayev
2002-10-25 15:34       ` [Comm] перенаправление вывода в лог Sergey Vlasov
2002-10-25 15:24     ` Sinom
2002-10-25 15:40       ` Sergey Vlasov
2002-10-25 17:20         ` [Comm] ðÏÞÅÍÕ ÂÕÆÅÒÉÚÁÃÉÑ ÍÅÎÑÅÔ ÐÏÒÑÄÏË ×Ù×ÏÄÉÍÙÈ × ÆÁÊÌ ÓÔÒÏË? Henri Bourbon
2002-10-25 17:42           ` ASA
2002-10-27 10:54             ` [Comm] Почему буферизация меняет порядок выводимых в файл строк? Valentin Nechayev
2002-10-27 10:53           ` Valentin Nechayev [this message]
2002-10-28  2:22             ` [comm] ðÏÞÅÍÕ ÂÕÆÅÒÉÚÁÃÉÑ ÍÅÎÑÅÔ ÐÏÒÑÄÏË ×Ù×ÏÄÉÍÙÈ × ÆÁÊÌ ÓÔÒÏË? Henri Bourbon
2002-10-25 13:25 ` [Comm] перенаправление вывода в лог Andy Gorev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20021027105349.GA40639@netch.kiev.ua \
    --to=netch@netch.kiev.ua \
    --cc=community@altlinux.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git