|
|
|
Получение потока вывода программы, запущенной из процесса
|
|||
|---|---|---|---|
|
#18+
Доброе время суток. Сразу же прошу прощения, если эта тема уже обсуждалась... по поиску я не нашел ответа на форуме. Итак, задача проста: программа (компилятор Delphi - dcc32.exe) запускается из процесса (созданного посредством функции CreateProcess, как вы понимаете). Компилятору передаются в строке запуска необходимые ключи и имя файла с исходным текстом на Паскале. Для получения информации о том, как прошла компиляция (были ли ошибки или все прошло удачно) в структуре STARTUPINFO флаг dwFlags устанавливается в STARTF_USESTDHANDLES и хеадеры файлов, которые будут использованы в качестве потоков ввода, вывода и ошибок, передаются в соответствующие поля этой же структуры. Приведу кусок исходного кода: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. После запуска программы компиляция исходника проходит успешно, необходимые файлы compiler_in.txt и compiler_out.txt создаются, но файл compiler_out.txt остается пуст, несмотря на то, что в нем должна быть информация о процессе компиляции: сколько строк откомпилировано и т.д. При этом, даже если в исходнике Паскаля намеренно допустить ошибку, чтобы компилятор начал ругаться, то это приводит лишь к тому, что exe-файла на выходе мы не получаем, а файл потока вывода/ошибки по-прежнему пуст. Кто знает, в чем может быть проблема? Что я сделал неправильно? ______________ Gnothi seauton... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 00:11 |
|
||
|
Получение потока вывода программы, запущенной из процесса
|
|||
|---|---|---|---|
|
#18+
Да, в последней строчке кода просто опечатка. Конечно, там должно быть: Код: plaintext 1. Gnothi seauton... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 00:18 |
|
||
|
Получение потока вывода программы, запущенной из процесса
|
|||
|---|---|---|---|
|
#18+
msdnWindows 2000/XP: If CREATE_ALWAYS is specified as the value of the dwCreationDisposition parameter and FILE_ATTRIBUTE_NORMAL is specified as the value of the dwFlagsAndAttributes parameter, CreateFile will fail and set the error GetLastError reports to ACCESS_DENIED. In this case, set the value of the dwFlagsAndAttributes parameter to the ORed value of the FILE_ATTRIBUTE_HIDDEN and FILE_ATTRIBUTE_NORMAL attributes to avoid this error. Оно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 10:34 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=429&tid=2034248]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 299ms |

| 0 / 0 |
