2017-02-18 21 views
0

Как мы учим в классе, что новые процессы создаются с использованием fork() или exec() системных вызовов.Почему мы создаем новые процессы, используя системные вызовы fork() или exec()?

Предположим, мы создали дочерний процесс с использованием fork(), в чем цель этого вновь созданного процесса? почему мы создали этот процесс?

Я спрашиваю о приложениях, где мы должны создать новый процесс.

ответ

0

Несколько примеров использует создание новых процессов:

  • В среде оболочки, каждую команду вы запускаете (как ls) является его собственным двоичным файлом. Основная программа оболочки будет fork(), а затем выполнить соответствующую утилиту.
  • Веб-серверы, такие как Apache httpd server, создадут новый процесс, используя fork() для обработки отдельных запросов.
  • Некоторые веб-браузеры, такие как Chrome, создают новые процессы для каждой открытой вкладки, чтобы использовать преимущества изоляции между отдельными процессами для повышения безопасности.
  • Рабочие среды будут работать и запускать новые процессы каждый раз, когда вы открываете приложение через меню графического интерфейса пользователя (например, меню запуска в окнах или док-станция в MacOS)
  • Создайте такие системы, как make fork и исполняйте компиляторы как отдельные процессов при создании кода.

Есть много других, но это некоторые примеры, когда вам может понадобиться использовать несколько процессов в программе.

+0

Можно ли запустить команду оболочки без использования fork() и любого семейства системных вызовов exec()? –

+0

Короткий ответ -> если вы не хотите, чтобы программа, вызывающая команду оболочки, закрывалась. Длинный ответ -> это возможно найти способ сделать это. Но он не был бы удаленно независимым от платформы, это не стоило бы делать, и это было бы полностью вне таблицы для любой команды оболочки, которая включает в себя сразу две или несколько утилит. –

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