powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / консольное приложение
10 сообщений из 10, страница 1 из 1
консольное приложение
    #39679160
consoleapp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
App1.
читает строку из консоли в переменную, передает в обработчик введенную строку, результат обработчика выводит обратно в консоль
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var
  str: string;

begin
  try
    ReadLn(str);
    WriteLn(ConsoleHandler(str));
  except
    on E: Exception do
      WriteLn(E.ClassName, ': ', E.Message);
  end;
end.



App2. на другом ЯП.
запускает App1 пишет строку в stdin, читает результат из stdout.

Попросили сделать так чтобы App1 не закрывалось и постоянно могла принимать команды и возвращать результат.
Первое решение которое пришло в голову просто запихнуть в цикл ReadLn/WriteLn, такой вариант работает в консоли, но в App2
не идет прием данных, они где-то повисают.

У меня есть подозрения где могут быть ошибки:
1. в App1 нужно выполнять еще какую-то команду.
2. в App2 не до конца соблюден протокол общения, возможно где то забыл какую-то команду прописать, но ведь почему-то другая версия нормально работает.

Может кто-нибудь подскажет в чем может быть дело, где копать. На худой конец может есть rfc по общению консольных приложений?
...
Рейтинг: 0 / 0
консольное приложение
    #39679171
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
consoleappПервое решение которое пришло в голову просто запихнуть в цикл ReadLn/WriteLn, такой
вариант работает в консоли, но в App2 не идет прием данных, они где-то повисают.

Значит в Апп2 баг. Отлаживайся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
консольное приложение
    #39679181
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Помоему он про конвеер. Типа app1.exe | app2.exe
...
Рейтинг: 0 / 0
консольное приложение
    #39679217
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterПомоему он про конвеер.

Точнее, ему нужен фронт-енд. Но проблема в том, что нагугленный код работает не так.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
консольное приложение
    #39679332
consoleapp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
App1 принимает, отправляет, ждет данные, все как задумано.
App2 (на другом ЯП, nodejs) слушает stdout дочернего процесса.
Когда App1 работает не в цикле, данные прилетают, когда App1 работает в цикле данные сохраняются в App2 и когда данных станет много они вываливаются.
Проблема моя в том что когда App1 работает в цикле App2 не правильно работает с stdout.

здесь писал так как грешил на App1.
...
Рейтинг: 0 / 0
консольное приложение
    #39679360
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
consoleappне идет прием данных, они где-то повисают.

У меня есть подозрения где могут быть ошибки:
1. в App1 нужно выполнять еще какую-то команду.Flush?
...
Рейтинг: 0 / 0
консольное приложение
    #39679450
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Многие подсистемы вывода в консоль буферизируют вывод. Попробуй сделать бесконечный цикл с WriteLn, если это твой случай - то Апп2 в конце концов хоть что-то уловит. Тогда да, Flush(System.Output).
...
Рейтинг: 0 / 0
консольное приложение
    #39679517
consoleapp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо ребята огромное. flush(output), то что надо.
он не до конца сбрасывает данные, нужно еще closefile(output);

итоговый алгоритм:
reset
writeln
flush
closefile

может быть есть какие-то нюансы которые я еще не успел увидеть? подскажите о чем еще подумать.

без вас не скоро бы нашел эту команду.
...
Рейтинг: 0 / 0
консольное приложение
    #39679534
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
consoleappможет быть есть какие-то нюансы которые я еще не успел увидеть?

Ага: закрытие выходного потока оборвёт связь. Так что не надо там ни reset ни closefile.
Flush - сбрасывает текущий буфер. "До конца" или "не до конца" это уже вопрос читающей
стороны.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
консольное приложение
    #39679695
consoleapp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проблема была в читающей стороне. ждал событие end, но в режиме pipe оно не происходит.
спасибо за замечания.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / консольное приложение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]