Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Функции изменения пользовательского контекста процесса

Читайте также:
  1. A. ненормальный ход родового процесса, родо­вые травмы
  2. Cудeбныe функции князя и вeчe
  3. D. как завершающий этап сукцессионного процесса
  4. I. Определение эпидемического процесса и методологическое обоснование разделов учения об эпидемическом процессе.
  5. I. Определение эпидемического процесса и методологическое обоснование разделов учения об эпидемическом процессе.
  6. I. Правосознание: понятие, структура, функции и виды.
  7. I. Сущность, формы, функции исторического знания.
  8. II. Правовая культура: понятие, функции и виды.
  9. II. Факторы эпидемического процесса.
  10. II. Функции Аппарата Правительства

 

Прототипы функций

#include <unistd.h>

int execlp(const char *file,

const char *arg0,

... const char *argN,(char *)NULL)

int execvp(const char *file, char *argv[])

int execl(const char *path,

const char *arg0,

... const char *argN,(char *)NULL)

int execv(const char *path, char *argv[])

int execle(const char *path,

const char *arg0,

... const char *argN,(char *)NULL,

char * envp[])

int execve(const char *path, char *argv[],

char *envp[])

 

Описание функций

Для загрузки новой программы в системный контекст текущего процесса используется семейство взаимосвязанных функций, отличающихся друг от друга формой представления параметров.

Аргумент file является указателем на имя файла, который должен быть загружен. Аргумент path – это указатель на полный путь к файлу, который должен быть загружен.

 

Аргументы arg0,..., argN представляют собой указатели на аргументы командной строки. Заметим, что аргумент arg0 должен указывать на имя загружаемого файла. Аргумент argv представляет собой массив из указателей на аргументы командной строки. Начальный элемент массива должен указывать на имя загружаемой программы, а заканчиваться массив должен элементом, содержащим указатель NULL.

 

Аргумент envp является массивом указателей на параметры окружающей среды, заданные в виде строк "переменная=строка". Последний элемент этого массива должен содержать указатель NULL.

 

Поскольку вызов функции не изменяет системный контекст текущего процесса, загруженная программа унаследует от загрузившего ее процесса следующие атрибуты:

идентификатор процесса;

идентификатор родительского процесса;

групповой идентификатор процесса;

идентификатор сеанса;

время, оставшееся до возникновения сигнала SIGALRM;

текущую рабочую директорию;

маску создания файлов;

идентификатор пользователя;

групповой идентификатор пользователя;

явное игнорирование сигналов;

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

 

В случае успешного выполнения возврата из функций в программу, осуществившую вызов, не происходит, а управление передается загруженной программе. В случае неудачного выполнения в программу, инициировавшую вызов, возвращается отрицательное значение.

 

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

 

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

 




Дата добавления: 2014-12-19; просмотров: 39 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав