Все программы в Linux сталкиваются с этой проблемой в некоторой степени.Процесс с открытым файловым дескриптором (и он у вас, очевидно, есть, даже если вы его не открывали специально, он произошел от одной из операций вашей системной команды) не завершится полностью, пока все дескрипторы не будут закрыты.Лучший пример, который я могу вспомнить на данный момент, - это проблема, с которой я столкнулся на работе, когда никогда не завершался сценарий запуска (bash), запускающий процесс Java.Проблема была в том, что мы делали 2> & 1> / path / to / log & , который не закрывает стандартный ввод (дескриптор файла 0).Преобразование его в &> / path / to / log устранило проблему, потому что &> означает все файловые дескрипторы, в то время как другой означает только stdin и stderr.
Ваша проблема похожа, иТот факт, что он многопоточный, усугубляет проблему.