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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по STDOUT 
:(
    Опции темы
doomer
Дата 3.7.2005, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Скажите пожалуйста как можно постоянно следить за появляющимися сообщениями в STDOUT и обрабатывать эти данные ? Например если появляеться строка end то завершить скрипт? ну или какое другое действие.
PM MAIL   Вверх
korob2001
Дата 3.7.2005, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Бесконечным циклом. Например:
Код

#!/usr/bin/perl -w
use strict;
my $file = "data.txt";

# Здесь блокируем файл
open(FILE, ">> $file") or die $!;

  # Бесконечный цикл
  while ( 1 ) {
      # Получаем значение с STDIN
      chomp( my $string = <STDIN> );
      # Завершаем цикл если ввели строку quit или exit в любом регистре
      last if $string =~ /^exit|quit$/i;
      # Ничего не делаем, если строка пустая или только из пробелов
      next if $string =~ /^\s*$/;
      # Если мы дошли сюда, заносим строку в файл
      print FILE $string, "\n";
  }
close( FILE );
#Здесь снимаем блокировку

Все строки, которые не будут пустыми и не содержащие только пробелы или только слова quit или exit, будут записаны в файл data.txt в текущем каталоге. Строки можно вводить сколько угодно. После того как введёшь quit или exit, программа завершает свою работу. После чего можешь посмотреть файл.

Удачи.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
doomer
Дата 3.7.2005, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Неее, мне надо следить за консолью, тоесть какие сообщения появляються в ней после запуска программы командой exec(C:\abc.exe) (консоль виндовая) это же ведь вроде через STDOUT монжно делать, или я не прав ?

PM MAIL   Вверх
korob2001
Дата 3.7.2005, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



doomer - либо ты не верно ставишь вопрос, либо я тебя не верно понимаю. Тебе нужно отслеживать ввод пользователя? Если да, то делается это через STDIN, STDOUT - это стандартное устройство вывода. Тебе же нуженн ввод, соответвтвенно STDIN. Ты пробовал запустить код, который я тебе привёл выше?


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
doomer
Дата 4.7.2005, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Мне не нужно следить за вводом пользователя, мне нужно следить из перл-скрипта за тем, что запущенная из него программа выодит в консоль, тоесть за STDOUT программы. Например запустил я телнет командой exec("telnet microsoft.com 80") а телнет выдал сообщение Could not connect to server так нужно это сообщение прочитать и взависимости от того какое сообщение выдаст телнет, выполнять определенный перл-код.
PM MAIL   Вверх
nerezus
Дата 4.7.2005, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



$a=qx(telnet ya.ru 80);


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
doomer
Дата 6.7.2005, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну так че тама, знает кто как это сделать ?
PM MAIL   Вверх
korob2001
Дата 6.7.2005, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Тебе помоему уже ответили.

Цитата

мне нужно следить из перл-скрипта за тем, что запущенная из него программа выодит в консоль, тоесть за STDOUT программы

Читай, что тебе написал nerezus.


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


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

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


 




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


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

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