Модераторы: ginnie, korob2001

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> фильтрация stdout запущенной программы, как отфильтровать stdout??? 
:(
    Опции темы
study
Дата 18.10.2004, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

Репутация: нет
Всего: нет



Народ у меня проблема, я запускаю из скрипта прогу, она выдаёт текст в браузер, а он мне там не нужен. Подскажите как мне записать выходные данные запущенной проги в строку или масив, и чтобы эти данные не выводились в браузер???
Заранее спасибо.
PM MAIL   Вверх
ElectricalStorm
Дата 18.10.2004, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: 1
Всего: 9



:)


--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
dimes
Дата 18.10.2004, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 20.7.2004
Где: то около СПБ

Репутация: нет
Всего: 14



study
Ты наверное прогу запускаеш так: system("что то");

Делай так:
my @out=`что то`; # `- обратная кавычка слева от 1 :)

PM ICQ   Вверх
study
Дата 21.10.2004, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

Репутация: нет
Всего: нет



dimes, да как ты сказал я прогу запускаю и все нормально, но как мне тогда проверись с каким кодом завершился процесс, system() возвращает код завершения, а `.............` возвращает stdout :qstn
PM MAIL   Вверх
s_a_s_h_a
Дата 21.10.2004, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 261
Регистрация: 20.7.2004
Где: Петрозаводск

Репутация: нет
Всего: 1



Не проще вместо проги вызывать функцию, которая и будет возвращать строку или массив?
PM MAIL   Вверх
study
Дата 26.10.2004, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

Репутация: нет
Всего: нет



нет, не проще, мне нужно прогу запустить, а не функцию.
Всем спасибо, я решил свою задачу так: запаустил system(), получил результат system(), а stdout и stderr перенаправил во временные файлы, вот код:

$result=system("/program 1>/tmp/out.out 2>/tmp/err.err");

Если у кого-нибудь есть ещё варианты, пишите будет интерестно
PM MAIL   Вверх
ElectricalStorm
Дата 26.10.2004, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: 1
Всего: 9



Код

close STDOUT;
close STDERR;
print 1;
print aa;




--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
study
Дата 9.11.2004, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

Репутация: нет
Всего: нет



ElectricalStorm, может подскажешь, как мне потом снова открыть stdout, с помощью open stdoun; не получается???
PM MAIL   Вверх
ElectricalStorm
Дата 9.11.2004, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: 1
Всего: 9



ага неполучиться ...нужно стначала копию сохранить а потом востановить ....

Код


# take copies of the file descriptors
open(OLDOUT, ">&STDOUT");

# redirect stdout and stderr
open(STDOUT, ">program.out")    or die "Can't redirect stdout: $!";

# close the redirected filehandles
close(STDOUT)                       or die "Can't close STDOUT: $!";


# restore stdout
open(STDOUT, ">&OLDOUT")            or die "Can't restore stdout: $!";


# avoid leaks by closing the independent copies
close(OLDOUT)                       or die "Can't close OLDOUT: $!";


print 1;





--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
study
Дата 10.11.2004, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

Репутация: нет
Всего: нет



ElectricalStorm, скажи пожалуйста как мне очистить stdout и stderr
PM MAIL   Вверх
ElectricalStorm
Дата 10.11.2004, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: 1
Всего: 9



что значит очистить ? .... может имеется ввиду их буфер ?


--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
study
Дата 10.11.2004, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

Репутация: нет
Всего: нет



наверно, я не спец. Смотри в чем проблема, мне надо запустиь прогу, я её запускаю с помощью system, можно как то перенаправить stdout этой проги в массив или переменную? Я это раньше делал перенаправляя её выход в файл, но сейчас мне надо это прогу клонировать, и ничего не получаеться. Хочу попробовать решить это так: получить чистый stdout проги, а потом пепекопировать в массив.
PM MAIL   Вверх
ElectricalStorm
Дата 10.11.2004, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: 1
Всего: 9



что по-вашему клонировать прогу ?
скпопировать исходный текст ?

какую задачу Вы решаете в общем ???




--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
study
Дата 10.11.2004, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

Репутация: нет
Всего: нет



нет, запускать несколько процессов одновременно. В общем задача такая: существует программа для проверки пропускной способности сети, мне необходимо написать скрипт для запуска этой проги и сгенерировать отчеты. Программа выдаёт в stdout результаты, они отправляются прямо в браузер, а мне это не нужно, мне нужно обработать результат, и выдать в браузел определённые данные. Оказалось, что если компьютер недоступен, то эта прога ждёт тайм аут около минуты, что неприемлимо!(КАК РЕШИТЬ ЭТУ ПРОБЛЕМУ ТОЖЕ НЕ ЗНАЮ) Пока мне надо добиться того, чтобы прога выдавала свой stdout и strerr в какой-нибудь массив, но не в браузер. Как решить эти задачи smile smile
PM MAIL   Вверх
ElectricalStorm
Дата 10.11.2004, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: 1
Всего: 9



пока такой вопрос...

на чем написана программа для проверки пропускной способности сети ?

и еще

сделайте скрипт 1.pl в нем
Код

warn $!;
print 10,"\n";


и скрипт 2.pl в нем
Код

$res = system('perl 1.pl');
print $res;


и запустите perl 2.pl

сморим результат...

Это сообщение отредактировал(а) ElectricalStorm - 10.11.2004, 18:24


--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1251 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.