Статья: Теория вычислительных процессов и структур

/* Потомок вызывает exec */

execl (“/bin/ls”, “ls”, “-l”, (char *)0);

fatal(“Ошибка вызова exec”);

break;

default:

/* Родительский процесс вызывает wait для приостановки */

/* работы до завершения дочернего процесса. */

wait ( (int *)0);

printf (“ Программа ls завершилась\n”);

exit (0);

}

}

Процедура fatal реализована следующим образом:

int fatal (char s)

{

perror (s);

exit (1);

}

Совместное использование fork и exec изображено на рис. 2.4.

Рисунок разбит на три части: До вызова fork, После вызова fork и После вызова exec. В начальном состоянии, До вызова fork, существует единственный процесс А и программный счетчик РС направлен на оператор fork, показывая, что это следующий оператор, который должен быть выполнен.

После вызова fork существует два процесса – А и В. Родительский процесс А выполняет системный вызов wait, что приведет к приостановке выполнения процесса А до тех пор, пока процесс В не завершится. В это время процесс В использует вызов execl для запуска на выполнение команды ls. Что происходит дальше, показано в части После вызова exec на рис. 2.4. Процесс В изменился и теперь выполняет программу ls. Программный счетчик процесса В установлен на первый оператор команды ls. Так как процесс А ожидает завершения процесса В, то положение его программного счетчика РС не изменилось.

A

???. 2.4. ?????????? ????????????? ??????? fork ? exec

Порядок выполнения работы

1. Изучить теоретическую часть лабораторной работы.

2. Вывести на экран содержимое среды окружения. Провести попытку изменить в среде окружения PATH, вводя дополнительный путь. Проверить факт изменения пути, предпринимая вызов exec.

3. В основной программе с помощью системного вызова fork создать процессы – отец и сын. Процесс-отец выполняет операцию формирования файла из символов N aaa bbb (где N – номер выводимой строки) и выводит формируемые строки в левой половине экрана в виде:

N pid aaa bbb, (где pid – pid отца)

а процесс-сын читает строки из файла и выводит их в правой части экрана, но со своим pid. Имя файла задаётся в качестве параметра. Отследить очерёдность работы процесса-отца и процесса-сына.

К-во Просмотров: 576
Бесплатно скачать Статья: Теория вычислительных процессов и структур