Код выхода процесса, завершенного с помощью Process.Kill (), в C # - PullRequest
5 голосов
/ 16 марта 2010

Если в моем приложении на C # я создаю дочерний процесс, который может либо нормально завершиться, либо начать плохо себя вести, в этом случае я прекращаю его с помощью вызова Process.Kill (). Однако я хотел бы знать, если Процесс завершился нормально. Я знаю, что могу получить код ошибки завершенного процесса, но что будет нормальным кодом завершения и что будет означать, что процесс был убит?

Ответы [ 2 ]

7 голосов
/ 15 сентября 2012

Исходный код для Process.Kill () в показывает настройку кода выхода на -1 (по состоянию на сентябрь 2012 года). Операционная система Windows на самом деле использует 32-битные значения без знака для кодов выхода, но я считаю, что переводы со знаком-> без знака-> со знаком в C # должны работать (мне нужно только проверить на ноль или ненулевое значение, так что это не имеет значения для мой код).

С другой стороны, это явно недокументированное поведение (почему?), Поэтому Microsoft может изменить его завтра и взломать мой код, установив код выхода равным 0.

2 голосов
/ 16 марта 2010

Вы можете использовать свойство ExitCode, но, к сожалению, это зависит от того, как построено приложение. Так что, если у вас есть исходный код приложения, убедитесь, что оно возвращается правильно после успешного завершения. Пожалуйста, смотрите эту ссылку на MSDN, описывающую это более подробно: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.exitcode.aspx

...