![]() |
|
Модераторы: ginnie, korob2001 |
![]()
|
|
| octave |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 1.9.2006 Репутация: нет Всего: нет |
нужно запустить утилиту и получать ее вывод в реальном времени, без буферизации. Фунцией sysopen неудается запускать программы, хотя это вроде как аналог open, только без буферизации.
по коду возможно понятнее, чего я хочу добиться... |
|||
|
||||
| Nab |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 3 Всего: 37 |
Если что меня поправят, но думаю Вы все верно предполагали, но не угадали с местом
Попробуйте вместо read вызвать sysread. И второе, зачастую терминальная программа буферизирует свой вывод, то есть отдает тоже готовые строки, а не посимвольно... Хотя думаю это может все зависеть еще и от режима, попробуйте binmode включить.... -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
| sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 3 Всего: 28 |
octave, используй обычный open и <>, а если хочешь читать блочно, то используй local $/ = \$length;
Подробно смотри perldoc -f open.
-------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
| Nab |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 3 Всего: 37 |
sharq, плиз поясни подробней про $/. Насколько я знаю, это разделитель входных строк. А не размер буфера.
Это сообщение отредактировал(а) Nab - 4.9.2006, 11:42 -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 9 Всего: 50 |
А я так и не понял, чего еще нужно добиться. Вроде, в приведенном коде $| вполне успешно включает/выключает буферизацию... Или я не о том? |
|||
|
||||
| sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 3 Всего: 28 |
Nab,
perldoc -f open perldoc perlvar $/ для Perl версии 5.8.0 и выше. -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
| octave |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 1.9.2006 Репутация: нет Всего: нет |
Да, проблема была в буферизованном выводе утилиты. В заблуждение меня ввело то, что когда программа работала с терминалом, она выдавала небуферизованный вывод, а когда с пайпом нет (только узнал). Поэтому я думал, что буферизация не используется в ней.
Всем спасибо ) |
|||
|
||||
![]()
|
| Правила форума "Perl: Системное программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |