Почему я должен использовать fork () для создания простой оболочки в C - PullRequest
0 голосов
/ 24 апреля 2019

Я не знаю, почему мне нужно использовать функцию fork().

У меня уже есть много функций, таких как cat, cd, mkdir, ps, ls ... Но когда я видел чужой код, многие люди использовали функцию fork(). Я знаю, что это такое и как работать. Но я не понимаю, зачем эта функция нужна для создания простой оболочки. Я хочу знать, как использовать эту функцию для создания простой оболочки.

1 Ответ

0 голосов
/ 24 апреля 2019

Это дизайн.

Люди используют не fork (), а шаблон fork () - exec () для создания нового процесса. Мне кажется, что вы заставляете вашу оболочку понимать cat, cd и т. Д., И у меня складывается впечатление, что вы создали не оболочку, а программу REPL. Это хорошо. Например, в Bash также есть некоторые команды, работающие таким образом (например, определенные вами функции, «bg» и т. Д.), Но вы ограничили функциональность своей оболочки только тем, что реализовали.

Однако fork-exec позволяет вашей оболочке запускать программу. И что более важно, запускаемая программа не будет связываться с вашей оболочкой. Например, никакая ошибка сегментации в программе не может остановить работу вашей оболочки. На мой взгляд, эта часть является более важным аспектом оболочки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...