Linux как отправить команду в консоль

Вопросы программирования на Free Pascal, использования компилятора и утилит.

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

Linux как отправить команду в консоль

Сообщение Sawer » 03.08.2008 22:10:00

Ручной алгоритм такой
Запускаем в консоли "./home/test13", нажимаем "Enter", набираем "adc1", нажимаем "Enter", смотрим данные...

Как сделать в программе?
Код: Выделить всё
begin
  fpSystem('/home/test13');
  ЧТО ЗДЕСЬ??? КАК ОТПРАВИТЬ КОМАНДУ?
end.
Sawer
новенький
 
Сообщения: 69
Зарегистрирован: 15.05.2007 22:53:48

Re: Linux как отправить команду в консоль

Сообщение wavebvg » 04.08.2008 03:18:46

Консоль - это программа, которая интерпретивует работу bash, его вывод и прочее, исходя из этого и надо создавать программу...
wavebvg
постоялец
 
Сообщения: 355
Зарегистрирован: 28.02.2008 04:57:35

Re: Linux как отправить команду в консоль

Сообщение Sawer » 04.08.2008 10:05:35

wavebvg писал(а):Консоль - это программа, которая интерпретивует работу bash, его вывод и прочее, исходя из этого и надо создавать программу...

какой функцией послать команду?
Sawer
новенький
 
Сообщения: 69
Зарегистрирован: 15.05.2007 22:53:48

Re: Linux как отправить команду в консоль

Сообщение v-t-l » 04.08.2008 11:37:46

Код: Выделить всё
TProcess.InputStream.Write()
v-t-l
энтузиаст
 
Сообщения: 740
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Linux как отправить команду в консоль

Сообщение Sawer » 06.08.2008 09:16:24

Вот такой код получился:
Код: Выделить всё
program run;

uses
unix, baseunix, process, classes;

var MyProc: TProcess;
    S: string;
    StrList: TStringList;

begin
  MyProc := TProcess.Create(nil);
  StrList := TStringList.Create;
  MyProc.Options := MyProc.Options + [poWaitOnExit, poUsePipes];
  MyProc.CommandLine := './test13';
  MyProc.Execute;
  S := 'adc1'+LineEnding;
  MyProc.Input.Write(S[1], Length(S));
  StrList.LoadFromStream(MyProc.Output);
  StrList.SaveToFile('run-out');   
  StrList.Free;
  MyProc.Free;
end.

не работает!! почему может быть? помогите!
программа запускается и через 3-4 сек. закрывается! ничего не пишет в консоль или файл.
"run" и "test13" в одной директории!

Добавлено спустя 9 минут 7 секунд:
v-t-l писал(а):
Код: Выделить всё
TProcess.InputStream.Write()

InputStream нет... есть Input только (fpc 2.2.0, 2.2.3)
Sawer
новенький
 
Сообщения: 69
Зарегистрирован: 15.05.2007 22:53:48

Re: Linux как отправить команду в консоль

Сообщение B4rr4cuda » 06.08.2008 11:02:31

Глянь на класс TExProcess в этой ветке:
http://freepascal.ru/forum/viewtopic.php?f=1&t=2311&p=15380&hilit=TExProcess#p15380
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Linux как отправить команду в консоль

Сообщение Sawer » 06.08.2008 11:26:05

спасибо всем кто отписался! надо было добавить Sleep!
итоговый код такой:
Код: Выделить всё
program run;

uses
unix, baseunix, process, classes;

var MyProc: TProcess;
    S: string;
    StrList: TStringList;

begin
  MyProc := TProcess.Create(nil);
  StrList := TStringList.Create;
  MyProc.Options := MyProc.Options + [poUsePipes];
  MyProc.CommandLine := './test13';
  MyProc.Execute;
  Sleep(200);
  S := 'adc1'+LineEnding;
  MyProc.Input.Write(S[1], Length(S));
  StrList.LoadFromStream(MyProc.Output);
  StrList.SaveToFile('run-out');   
  StrList.Free;
  MyProc.Free;
end.

кому интересно тоже самое на AssignStream:
Код: Выделить всё
program run;

uses
unix, baseunix, process, classes;

var s: string; strlst: TStringList;
    si, so : Text;
    args: ansistring;
begin
  strlst := TStringList.Create;
  args := '';
  AssignStream (si,so,'./test13',[args]);
  if fpgeterrno<>0 then
  begin
    writeln ('AssignStream failed !');
    halt(1);
  end;
  sleep(200);
  writeln(so,'adc1');
  repeat   
    readln(si,s);
    strlst.add(s);
    writeln (s);
  until eof(si);
  strlst.SaveToFile('run-out');
  close(si);
  close(so); 
end.
Sawer
новенький
 
Сообщения: 69
Зарегистрирован: 15.05.2007 22:53:48


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

Рейтинг@Mail.ru