Создание дочерних процессов
Читаю сейчас книгу по операционным системам Таненбаума и Вудхала. Там приведен такой код:
#define TRUE 1
while TRUE {
type_prompt ( );
read_command(command, parameters);
if (fork( ) != 0) {
/* код родительского процесса */
waitpid(-1, &status, 0);
} else {
/* код дочернего процесса */
execve(command, parameters, 0)
}
}
и указано, что execve "перемещает образ памяти процесса", или иначе "заменяет весь образ памяти процесса файлом, указанным в первом параметре".
Как я понял, при создании дочернего процесса, создается копия образа памяти родительского процесса, разничается лишь PID. В частности, образ памяти дочернего процесса содержит код родительского процесса. Но я думаю, что образ памяти дочернего процесса должен содержать не весь код родительского процесса, а лишь часть его, иначе при его выполнении опять будет выполняться и бесконечный цикл, и уже не нужные type_prompt ( ); read_command(command, parameters);.
Я правильно понимаю?
|