Tprocess и ps -lax

Вопросы программирования и использования MSEide + MSEgui.

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

Ответить
the_beginer
новенький
Сообщения: 30
Зарегистрирован: 29.05.2008 16:51:51

Tprocess и ps -lax

Сообщение the_beginer »

Доброго времени суток!
Давно я не был здесь, да и вообще за компьютером - сын у меня родился :)

Но вот после долгого перерыва я снова сел за программирование.
И почти сразу натолкнулся на такую вот проблему.

Есть задача: надо программно получить вывод команды

Это полная информация с процессах, запущенных в системе. Причем запущенные процессы, что важно для меня, показываются полностью, т.е. полный путь до файла + параметры. (далее полный путь)

казалось бы чего проще, ан нет. Нашел-таки пару подводных камней.
Итак, используем tprocess

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

uses ...  , process, CLASSES;
....
var AProcess : tprocess;
    astringlist : tstringlist;
...
begin
 s := 'ps -lax';
 AProcess := TProcess.Create(nil);
 AProcess.CommandLine := s;
 AProcess.Options := AProcess.Options + [powaitonexit, pousepipes];
 AProcess.Execute;     
 AStringList.LoadFromStream(Aprocess.output);
 AProcess.free;

 далее раскидываем итог по по ячейкам stringgrid ...


и получаем итог. В колонке, где отображается полный путь, вписываются только первые 11 символов, остальное отбрасывается (рис1).

Честно, я долго игрался с этим куском. Однако, победить не смог.
Может, подскажите, в чем причина и как исправить?
Вложения
рис 1
рис 1
frost_asm
новенький
Сообщения: 26
Зарегистрирован: 28.12.2008 21:40:36

Сообщение frost_asm »

Методом проб вияснилось что виноват gdb. Если отключить его в опциях IDE, то должно отображатся нормально. Или запускать не из IDE.
the_beginer
новенький
Сообщения: 30
Зарегистрирован: 29.05.2008 16:51:51

Сообщение the_beginer »

хм, действительно. Запомним на будущее, что результат работы через IDE и из консоли может отличаться.
frost_asm, спасибо

Стоит ли писать Мартину?
Dmitry
новенький
Сообщения: 52
Зарегистрирован: 05.07.2005 08:53:06

Сообщение Dmitry »

Насколько я помню, можно добавить еще ключик -w, чтобы список процессов не обрезался по длине строки. По крайней мере во FreeBSD так работает.
Ответить