CTest оставляет файловый дескриптор открытым перед выполнением тестов - PullRequest
0 голосов
/ 04 февраля 2020

TL; DR

Когда я запускаю свои тесты на основе Google Test через ctest, эти тесты видят дескриптор открытого файла, который они не открыли. Мне интересно, как этот файловый дескриптор не будет виден моим тестам.

Справочная информация

В настоящее время я работаю над проектом Linux -specifi c, который выполняет двоичные файлы и выполняет магию c с использованием ptrace. Моя цель - сделать исполнителя как можно более невидимым, чтобы исполняемые двоичные файлы не имели понятия, что они запускаются как-то необычно. Таким образом, я должен убедиться, что исполнитель закрывает все файловые дескрипторы, которые он использует для конфигурации между fork и exec. Я написал простой тест, чтобы убедиться, что исполняемая программа соблюдает только стандартные файловые дескрипторы 0, 1 и 2, но не запускается при запуске через CTest и завершается успешно, если запускается вручную как исполняемый файл.

Я использую

  • Ubuntu 18.04
  • clang 9.0
  • CMake 3.16.3

Пример проекта

Вот минимальный проект, который иллюстрирует проблему:

https://gist.github.com/lfyuomr-gylo/2286c5eddf4385a4ae311c230078c5b6

Вопросы

  1. Это ошибка или функция? Для меня это кажется ошибкой, так как я понятия не имею, с какой целью этот дополнительный файловый дескриптор может оставаться открытым перед выполнением моего теста, но я довольно плохо знаком с инфраструктурой C ++ и могу что-то упустить.
  2. Есть ли способ решить проблему без изменения тестового кода, т. Е. Манипулировать флагами ctest?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...