У меня есть небольшое приложение, назовем его «launch.exe». Это приложение на C ++.
То, что я делаю в этом, я вызываю system () 3 раза, чтобы запустить 3 других приложения. давайте назовем их A, B и C.
задача № 1
A, B и C являются приложениями с графическим интерфейсом, и "launch.exe" не может прогрессировать, пока не завершится А. Затем он застревает снова, пока не выйдет B. Затем снова застрял, пока C не выходит. Я бы хотел, чтобы lauch.exe мог работать, пока открытые приложения остаются открытыми.
Задача № 2
Предполагая, что я могу найти решение проблемы # 1, после запуска A, B и C я не хочу, чтобы файл launch.exe оставался открытым. Я хочу, чтобы launch.exe закрывался, и я хочу, чтобы A, B и C продолжали работать.
Вот сценарий для вас. Допустим, «launch.exe» запускает только одно приложение (назовем его A). Затем, после запуска A, если я закрываю "launch.exe", A остается открытым.
ОК ... это то, что я хочу, но что только что произошло? А сирота сейчас? И если так, это проблема?
А что если я закрою A перед тем, как выйти из launch.exe? На первый взгляд, все в порядке, но к чему это возвращает? Если бы я запустил exe в командной оболочке cmd, он бы вернулся к этому, но поскольку я сделал это из системного вызова () в приложении c ++, он возвращается к моему lauch.exe или становится зомби?
ПРИМЕЧАНИЯ:
Почему я использую систему ()?
- Потому что мне нужно что-то совместимое с Windows / Linux.
- Потому что мне нужно повысить привилегии до уровня администратора для некоторых запускаемых приложений.
- Я должен добавить, что крайне важно, чтобы A, B и C были полностью независимыми (по соображениям безопасности они не должны совместно использовать одно и то же пространство памяти или что-либо еще).
- Наконец, некоторые приложения, B и C, являются многопоточными (я утверждаю это, потому что я прочитал, что некоторые функции не запускают многопоточные приложения должным образом. Я не знаю, по каким причинам.).