пожалуй распишу более подробно
есть перловый скрипт
print.pl:
#!/usr/bin/perl
print "Hello world\n";
my $r = <STDIN>;
если вызывать через шелл
$./print.pl
то все нормально
если
$./print.pl > ./out
и на другой консоли сделать
$tail -f ./out
то Hello World выводится в файл только после того, как введу что-нить на клавиатуре и нажму ввод. А нужно что бы до этого.
Это все нужно для моей ситуации:
я делаю ./execve внутри дочернего процесса, предварительно подменив stdout и stderr на свои пайповые дескрипторы
и читаю вывод из родителя. В основном работает нормально, но в случае этого скрипта Hello World не выводится до ввода на клавиатуре.
Поэтому думаю тут проблема с буферизацией вывода
подскажите плиз если знаете.
Вот еще пример:
[roland@main test]$ ./print.pl
Hello world
any_keyboard_word_and_enter
[roland@main test]$ ./print.pl | grep H
any_keyboard_word_and_enter
Hello world
Возможно но ведь если пишет на stdout то все в норме....
неужели там дескрипторы настоко разные?
>У тебя буферизацией занимается не Linux, а Perl
если это действительно так, то почему же тогда при запуске
$print.pl
Нормально все выводилось?
Или перл определяет, что собой представляет дескриптор на stdout?