Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Изменение пользовательского контекста процесса. Семейство функций для системного вызова exec().




http://cs.mipt.ru/docs/courses/osstud/02/ch2.htm - l020303bДля изменения пользовательского контекста процесса используется системный вызов exec(), который пользователь не может вызвать непосредственно. Вызов exec()заменяет пользовательский контекст текущего процесса на содержимое некоторого исполняемого файла и устанавливает начальные значения регистров процессора (в том числе устанавливает программный счетчик на начало загружаемой программы). Этот вызов требует для своей работы задания имени исполняемого файла, аргументов командной строки и параметров окружающей среды. Для осуществления вызова программист может воспользоваться одной из 6 функций: execlp(), execvp(), execl(), execv(), execle(), execve(), отличающихся друг от друга представлением параметров, необходимых для работы системного вызова exec(). Взаимосвязь указанных выше функций изображена на рисунке 2.3.

Рисунок 2.3. Взаимосвязьexeclp(), execvp(), execl(), execv(), execle(), execve()

Поскольку системный контекст процесса при вызове exec() остается практически неизменным, то большинство атрибутов процесса, доступных пользователю через системные вызовы (PID, UID, GID, PPID и другие, смысл которых будет становиться понятным по мере углубления наших знаний на дальнейших занятиях), также не изменяется после запуска новой программы

Важно понимать разницу между системными вызовами fork() и exec() Системный вызов fork() создает новый процесс, у которого пользовательский контекст совпадает с пользовательским контекстом процесса-родителя. Системный вызов exec() изменяет пользовательский контекст текущего процесса, не создавая новый процесс.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных