2013-08-17 4 views
3

При отслеживании системных вызовов с помощью ltrace для программ с fork, vfork ... он показывает вызов системного вызова SYS_Clone. Тогда в чем важность системного вызова SYS_fork, SYS_vfork в ядре. Они предназначены для исторической цели?Важность системных вызовов уровня ядра для вилки, vfork

+1

'sys_clone' - это более старая функция. 'sys_fork' и' sys_vfork' были добавлены в Linux 2.2. Внутренне все три используют 'do_fork()'. –

+1

Я использовал его на Linux 3.2 – user567879

+0

http://stackoverflow.com/questions/4856255/the-difference-between-fork-vfork-exec-and-clone –

ответ

3

Их необходимо поддерживать в ядре, потому что старые программы пользовательского пространства (старые версии libc или старые статически связанные двоичные файлы) называют эти системные вызовы, а не более новыми clone. Ядро Linux поддерживает обратную совместимость в ABI.

Если в ядро ​​Linux добавлена ​​новая архитектура, ей не нужно поддерживать эти устаревшие системные вызовы, поскольку для этой архитектуры не может быть старого пространства. Таким образом, вы найдете, например, что у архитектуры ia64 нет вызова SYS_fork.

Смежные вопросы