Помогите разобраться с in/out TProcess

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Boris3B
новенький
Сообщения: 11
Зарегистрирован: 17.11.2008 17:34:10

Помогите разобраться с in/out TProcess

Сообщение Boris3B »

Добрый день!

Прочитал статью о работе с TProcess - http://wiki.lazarus.freepascal.org/Exec ... rograms/ru. Всё замечательно, только вот не понятно, а как тот процесс, который я запускаю, определяет процесс, которым он запущен и пишет ему ответ. Т.е. как читать понятно, а как и куда писать в статье опущено. Дайте пожалуйста ссылку на рабочий пример общения двух процессов.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Вызываемай процесс получает Handle Анонимных пайпов через стандартные потоки StdOut и StdIn. Для чтения и записи можно пользоваться стандартными функциями Read и Write либо работать с вводом/выводом через потоки.

Код: Выделить всё

var
  sIn: TInputPipeStream;
  sOut: TOutputPipeStream;
begin
  sIn:=TInputPipeStream.Create(StdInputHandle);
  sOut:=TOutputPipeStream.Create(StdOutputHandle);
end;

Запись при помощи потока

Код: Выделить всё

  sOut.WriteString('Hello!');

Чтение из потока

Код: Выделить всё

  while sIn.NumBytesAvailable>0 do // Если есть данные в буфере
   sIn.ReadString(s);
Boris3B
новенький
Сообщения: 11
Зарегистрирован: 17.11.2008 17:34:10

Сообщение Boris3B »

Спасибо!
Ответить