Возвращение кодов ошибок из процесса при использовании CreateProcess - PullRequest
2 голосов
/ 15 декабря 2011

Так что я работаю над созданием автоматизированного теста для некоторого кода.Есть исполняемый файл из командной строки, который называется cmdLineProc.

Я делаю свои тестовые программы на C ++ (не использую Python или потому что есть API, который мы используем, который ускоряет эти тесты).Аргументы командной строки создаются в тесте в виде строк и передаются функции, которая использует CreateProcess для запуска cmdLineProc. Это отлично работает.Я могу вызвать cmdLineProc, и он работает, и тесты проходят.Но только тогда, когда не возвращена ошибка.

При тестировании мне необходимо проверить, что все происходит не так, как предполагалось.в этих случаях cmdLineProc возвращает значение ошибки.

Поэтому, если я запускаю cmdLineProc в командной строке с параметрами, которые приведут к сбою, я получаю сообщение «Ошибка, ошибка: -3», где -3 - этокод ошибки.Но когда я запускаю это через тест C ++, используя CreateProcess, я получаю проблему.CreateProcess просто терпит неудачу и возвращает -1, код, чтобы сказать, что это не удалось.Это не указывает на то, почему это не удалось.Я использую GetExitCodeProcess для получения статуса завершения cmdLineProc.

Кто-нибудь знает, возможно ли получить значение ошибки из cmdLineProc, возвращенного с использованием этого метода?Если нет, кто-нибудь знает, как я могу реализовать это?

1 Ответ

0 голосов
/ 15 декабря 2011

GetExitCodeProcess возвращает код завершения процесса запуска. Если при запуске программы появляется другая ошибка, то созданный процесс просто записывает другую ошибку в стандартный вывод.

В этом случае вам придется анализировать выходные данные созданного процесса.

Вы можете увидеть, как это делается здесь .

...