Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
ВнизКак прочитать из stderr? Найти похожие ветки
← →
kull (2003-11-10 12:17) [0]Надо запустить exe файл, который пишет в stderr, и потом прочитать все, что он написал туда.
Как сделать?
← →
Zergling (2003-11-10 12:41) [1]Надоже какой интересный вопрос. Как файл то запустить? Да и еще прочитать неизвестно что в неизвестно куда записанное.
Может разжуешь?
← →
gek (2003-11-10 12:47) [2]Ну так он же написал
> Надо запустить exe файл, который пишет в stderr, и потом
> прочитать все, что он написал туда.
Значит надо запускать, тут никуда не деться.
Вопрос в том как прочить оттуда все, что он написал туда.
Вот это настоящая загадка
← →
Anatoly Podgoretsky (2003-11-10 13:24) [3]Вместо STD_OUTPUT_HANDLE использовать STD_ERROR_HANDLE
← →
willys (2003-11-10 13:32) [4]http://www.delphikingdom.com/mastering/std.htm
← →
Zergling (2003-11-11 07:27) [5]А, вот кто такой stderr.
Sorry автору ветки.
← →
Dimka Maslov (2003-11-11 08:39) [6]В глупых сях, рассчитанных на консольный режим раобты есть два потока вывода stdout (в паскале эквивалент переменной Output, в Delphi - то куда выводит информацию Writeln в консольных приложениях). А также stderr - поток вывода, в который записываются сообщения об ошибках, по умолчанию то же что и stdout). Ни в паскале ни в Delphi аналога этому рудименту нет, но "стандарт языка си" требует его поддержки.
← →
Юрий Зотов (2003-11-11 09:19) [7]> kull © (10.11.03 12:17)
1. Заполняете TSecurityAttributes, разрешая наследование (последнее поле можно ставить в nil).
2. С этой TSecurityAttributes вызываете CreateFile и запоминаете полученный хэндл.
3. Заполняете TStartupInfo, указав этод хэндл в поле STD_ERR и включив во флаги USE_STD_HANDLES (поля STD_IN и STD_OUT можно заполнить вызовом GetStdHandle).
4. Вызываете CreateProcess с разрешением наследования хэндлов.
И в результате StdErr будет перенаправлен в Ваш файл. Аналогичным образом, вместо файла можно использовать канал (Pipe) - тогда вывод пойдет прямо в Вашу программу, а там уже можете его хоть в Memo выбрасывать.
← →
willys (2003-11-11 14:07) [8]> Dimka Maslov © (11.11.03 08:39) [6]
ну вообше-то, stderr - это объект операционной системы, представляющий собой (с точки зрения программы) самый обычный текстовый файл. т.е. к "глупым сям" он имеет не больше отношения, чем какой-нибудь CreateWindow или SendMessage.
← →
kull (2003-11-12 15:36) [9]Спасибо willys и Юрию Зотову, ну и всем остальным...
← →
kull (2003-11-12 15:40) [10]Прошу извинить за глупый вопрос, но как мне получить Exit Code запущенного exe-шника?
← →
Digitman (2003-11-12 15:45) [11]действительно - глупый
потому как хэлп при попытке хоть сколь либо пошевелить мозгами тут же выкидывает инф-цию :
GetExitCodeProcess()
← →
kull (2003-11-12 15:57) [12]
> Digitman © (12.11.03 15:45) [11]
Thanks.
PS:А вообще-то глупых вопросов нет. Есть глупые ответы.
← →
Digitman (2003-11-12 16:00) [13]никак задело ?)
надо же)
← →
kull (2003-11-12 16:14) [14]Удалено модератором
Примечание: Начинать с себя и без искажений ников
← →
kull (2003-11-12 16:19) [15]Удалено модератором
Примечание: Повторение приведет другим последстивиям и не трогай модератора, болше предупреждений не будет.
← →
kull (2003-11-12 16:23) [16]Удалено модератором
← →
Digitman (2003-11-12 16:26) [17]
> kull
это уж будь любезен в "Потрепаться" поплакаться на мою якобы "жесткость") ... ничего против не имею))))
← →
kull (2003-11-12 16:27) [18]Удалено модератором
Примечание: Ну что ж, отдохка, пока добровольно в течении 1 суток и не думай нарушать режим
← →
Digitman (2003-11-12 16:28) [19]
> kull
там же, в "Потрепаться", я и вспомню все твои амбициозные выпады в адрес местного люда... коль осмелишься тему поднять)) ... уверяю - мягко-мягко так "вспомню")))
← →
kull (2003-11-12 17:34) [20]Удалено модератором
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c