Мое намерение состояло в том, чтобы гарантировать, что дочерние процессы не будут продолжать жить после завершения цели Bazel. Поскольку я работал без песочницы Bazel, я не мог воспользоваться возможностями песочницы Bazel, чтобы гарантировать, что дочерние процессы действительно были завершены.
К счастью, мои тесты были предназначены для системы Linux, поэтому я хотел использовать функцию пространства имен Linux, чтобы гарантировать завершение дочерних процессов. Я использовал команду unshare
для настройки пространства имен процесса перед выполнением команды Bazel:
$ bazel shutdown # ensure Bazel not already running
$ unshare --pid --fork --map-root-user bazel test ...
Я думаю, что урок здесь заключается в том, что, несмотря на то, что Bazel также использует пространства имен Linux для настройки песочниц Bazel, возможности песочницы Bazel либо все, либо ничего (например, вы используете много пространств имен Linux или нет пространств имен Linux).