Я пытаюсь понять, как работают программы, команды оболочки и рабочие системы . Пожалуйста, извините мое невежество, так как я новичок в этом.Системные вызовы, команды и программы оболочки
Когда я использую компилятор языка в командной строке, когда я типа куб.см [имя файла], я полагаю, что оболочка использует вилка() Системный вызов дублировать его процесс и затем Exec() системный вызов загрузит компилятор cc, исполняемый в ключевое изображение дочернего процесса. Затем дочерний процесс , содержащий исполняемый файл cc, будет выполнять свою работу, пока ожидает, что родительский процесс, выполняющий оболочку, ждет или нет. Это правильно?
Что относительно команд оболочки, таких как cp, mv, ls и другие. Кто они такие? - это исполняемые программы, которые также будут выполняться в новом дочернем процессе , выложенном оболочкой? Что относительно сценариев оболочки? Предположим, я создаю простой скрипт как этот (пожалуйста игнорировать ошибки, я не знаю, как это сделать еще):
echo "Hello"
date
echo
cc -o test file1.c file2.c file3.c
, а затем я выполнить этот сценарий с помощью командной строки. Будет ли в командной строке fork() новый процесс и exec() этот скрипт в новом процессе ? И тогда будет ли этот новый процесс, содержащий скрипт fork() других процессов для выполнения даты, компилятора cc и т. Д.?
Надеюсь, это не звучит слишком запутанно, потому что я = /.
Отличное объяснение, спасибо –