Проверьте наличие ошибок в команде, переданной в popen API в cpp
Есть приложение cpp, где я хочу прочитать следующий тип сжатого файла:
- file_name.gz
- file_name.Z
- file_name.tar.gz
Для этого я проверяю расширение файла и соответственно выбираю технику распаковки. Например, file_name.gz будет распакован с помощью "gunzip -C file_name.gz".
Я хочу получить дескриптор FILE для распакованного файла. Я использую API popen () для этого. Теперь может возникнуть ситуация, когда gunzip/uncompress/tar завершится неудачно при распаковке файла из-за проблем с памятью. Как мне зафиксировать сбой в моем приложении CPP. Есть способ проверить, не сработал ли popen или нет. Что насчет команды, переданной popen().
Пожалуйста помоги. Я пытался найти его в разных местах, но не смог найти удовлетворительного решения.
1 ответ
Когда процесс завершается нормально, ожидается, что он вернет код выхода 0 (юридически, EXIT_SUCCESS
) к родителю. В противном случае, в случае сбоя или любого другого ненормального завершения, ожидается, что будет возвращено ненулевое значение. Вы можете получить код выхода по телефону pclose()
, Если код равен 0, дочерний процесс, скорее всего, успешно завершен.