Проверьте наличие ошибок в команде, переданной в popen API в cpp - PullRequest
0 голосов
/ 06 июня 2018

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

  1. имя_файла.gz
  2. имя_файла.Z
  3. имя_файла.tar.gz

Для этого я проверяю расширение файла и соответственно выбираю технику распаковки.Например, file_name.gz будет распакован с помощью "gunzip -C file_name.gz".

Я хочу получить дескриптор FILE для распакованного файла.Я использую API popen () для этого.Теперь может возникнуть ситуация, когда gunzip / uncompress / tar завершится неудачно при распаковке файла из-за проблем с памятью.Как мне зафиксировать сбой в моем приложении CPP.Есть способ проверить, не сработал ли popen или нет.Что насчет команды, переданной popen ().

Пожалуйста, помогите.Я пытался найти его в разных местах, но не смог найти удовлетворительного решения.

1 Ответ

0 голосов
/ 06 июня 2018

Когда процесс завершается нормально, ожидается, что он вернет код выхода 0 (юридически, EXIT_SUCCESS) родителю.В противном случае в случае сбоя или любого другого ненормального завершения ожидается возвращение ненулевого значения.Вы можете получить код выхода, позвонив по номеру pclose().Если код равен 0, дочерний процесс, скорее всего, успешно завершен.

...