Вы не можете использовать семейство функций exec
для загрузки другого исполняемого файла в потоке; exec
функции заменяют весь процесс процессом, запущенным из исполняемого файла. Таким образом, fork()
необходим, если вы хотите, чтобы ваш исходный процесс продолжал выполняться.
Теоретически вы можете повторить большую часть поведения системного вызова exec
в пользовательском пространстве и запустить исполняемый файл в потоке, но так как поток будет использовать общую таблицу открытых файлов, обработчики сигналов и т. Д. процесс, это, вероятно, деструктивно вмешиваться в основной процесс. Также было бы много работы.