Раньше всегда было так, что на самом деле был только один способ выполнить программу в Unix и его производных, это был системный вызов exec()
.Самый первый (ядро) процесс был создан загрузчиком;все последующие процессы были созданы fork()
и exec()
.Конечно, fork()
создал только копию оригинальной программы;это был системный вызов exec()
- в одной из нескольких форм в исходном коде C, но в конечном итоге эквивалентный execve()
- который осел заменил текущий процесс новым образом.
В наши дни существуют механизмы, подобные posix_spawn()
, которые могут или не могут использовать отдельный системный вызов для достижения примерно того же механизма.