При использовании excevp, как я могу различать случаи, когда выполнение команды завершается с ошибкой и когда выполнение команды заканчивается кодом нулевого выхода?Как различать случаи выполнения при использовании execvp?
ответ
Распространено _exit(127)
если Exec терпит неудачу и затем родитель интерпретировать этот код выхода как Exec не в состоянии (раковины, system
и posix_spawn
все это сделать - что фактически означает, что они не могут сказать, если ребенок сделал Exec и возвращается 127 или если exec не удалось).
Если вы хотите создать супер надежное решение, вы можете создать перед тем, как нарисовать трубку с номером O_CLOEXEC
, а затем выполнить дочерний процесс, отправив execv-elicited errno через этот канал родительскому.
Если выполнение команды завершается с ошибкой (т. Е. Не запускается) execvp
будет возвращать -1, а errno
будет содержать соответствующий код ошибки.
Если команда выполнена успешно, execvp
не возвращается. Родительский процесс того, который вызвал execvp
, может вызвать wait
, чтобы получить возвращаемое значение команды, независимо от того, равен ли он нулю или не равен нулю.
- 1. Как различать случаи и переводить
- 2. Каковы краевые случаи при использовании Object.prototype.toString?
- 3. Как messaure время выполнения программы, вызванной execvp?
- 4. Если случаи, поврежденные при использовании накопителя
- 5. Как исключить все случаи транзитивной зависимости при использовании Gradle?
- 6. Как различать базы данных при использовании, например, sequence
- 7. Как различать целочисленные и десятичные поля при использовании OracleDataReader.GetFieldType (i)
- 8. Как различать формы в django при использовании modelformset_factory?
- 9. Команды оболочки в C (ошибка при использовании Execvp)
- 10. C - execvp() interprocess communication
- 11. индикатор выполнения при использовании knitr
- 12. Ошибка выполнения при использовании NSMutableString
- 13. Ошибка выполнения при использовании StringUtils
- 14. Ошибка выполнения при использовании startActivity()
- 15. Различать новую строку и ошибки при использовании sscanf
- 16. Есть ли техника, чтобы случаи не повторялись при использовании Math.random()?
- 17. Использовать случаи для undefineds при использовании только const в JavaScript?
- 18. Ошибка выполнения при использовании словаря python при использовании defaultdict
- 19. Как захватить вывод execvp
- 20. Как использовать execvp()
- 21. Как сохранить вывод execvp
- 22. Получение зацикливание на execvp()
- 23. Как перебирать все случаи при разбиении объектов
- 24. Как различать различные исключения при вызове web-сервиса при использовании .net?
- 25. Как изменить случаи в инструкции switch после выполнения одного случая?
- 26. Ошибка выполнения при использовании wordnet через JWNL
- 27. ошибка времени выполнения при использовании указателя карты
- 28. Порядок выполнения при использовании синхронного вызова $ .ajax
- 29. Как различать членов профсоюза в c во время выполнения
- 30. как различать события многих элементов управления, добавленных во время выполнения
Вы прочитали man-страницу? – Olaf
"* когда выполнение команды заканчивается кодом нулевого выхода *, тогда команда получила * exec * uted. Поэтому 'execvp()' преуспел. Если 'execvp()' преуспел, он не возвращается. Затем родительу нужно вызвать 'wait()' или 'waitpid()' для сбора кода возврата процесса. – alk