Код выхода процесса, завершенного с помощью Process.Kill() , в C#
-
20-09-2019 - |
Вопрос
Если в моем приложении C# я создаю дочерний процесс, который может либо нормально завершиться, либо начать работать неправильно, и в этом случае я завершаю его вызовом Process.Kill(). Однако я хотел бы знать, завершился ли процесс нормально. Я знаю, что могу получить код ошибки завершенного процесса, но что будет обычным кодом завершения и что будет означать, что процесс был завершен?
Решение
Вы можете использовать свойство ExitCode, но, к сожалению, это зависит от того, как создано приложение.Поэтому, если у вас есть исходный код приложения, убедитесь, что оно корректно возвращается при правильном выходе.Пожалуйста, посмотрите эту ссылку на msdn, описывающую это более подробно:http://msdn.microsoft.com/en-us/library/system.diagnostics.process.exitcode.aspx
Другие советы
Исходный код Process.Kill() показывает установку кода выхода на -1 (по состоянию на сентябрь 2012 г.).Операционная система Windows на самом деле использует 32-битные беззнаковые значения для кодов выхода, но я считаю, что переводы со знаком->без знака->знака в C# должны работать (мне нужно только проверить ноль или ненулевое значение, поэтому это не имеет значения для мой код).
С другой стороны, это явно недокументированное поведение (почему?), поэтому Microsoft может изменить его завтра и сломать мой код, установив код выхода на 0.