Пишу GUI приложение, которое использует gtkmm и boost. Недавно понадобилось запускать из него другие приложения, т. е. вызвать fork() и execlp.
Вот тут то и возник вопрос. fork() копирует только текущий поток. А как с остальными? Внутри GTK ведь тоже крутятся какие-то потоки - не будет ли конфликтов?
К тому же у меня в библиотеке есть глобальный скрытый singleton класс, который создает boost'овский поток. Деструктор класса, соответственно, помечает переменную, которую данный поток проверяет и ждет завершения потока.
При выполнениее execlp выполняетя деструктор данного класса, но функция wait, которая ждет завершения потока не возвращает управление.
Подскажите, пожалуйста, как решаются такие проблемы.