Проверьте наличие ошибок в команде, переданной в popen API в cpp

Есть приложение cpp, где я хочу прочитать следующий тип сжатого файла:

  1. file_name.gz
  2. file_name.Z
  3. 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, дочерний процесс, скорее всего, успешно завершен.

Другие вопросы по тегам