Основные сведения о работе с процессами

Приоритет (nice).

Идентификаторы пользователя и группы.

Текущий корневой каталог

Текущий рабочий каталог

Дескрипторы открытых файлов.

Программное окружение (programm environment)

это просто набор строк, заканчивающихся нулевым символом. Строки называются переменными окружения и имеют следующий формат:

имя переменной = значение переменной

Дескриптор файла — некоторое число, которое используется для обращения к файлу. При запуске процесс наследует дескрипторы от родительского процесса.

это каталог от которого система производит разрешение относительных имен.

это каталог от которого производится разрешение абсолютных имен. Процесс не имеет доступа к файлам находящимся выше корневого каталога.

С каждым процессом связаны действительные идентификаторы пользователя (real user ID) и группы (real group ID), совпадающие с соответствующими идентификаторами пользователя, запустившего процесс. Кроме того, с процессом связаны эффективные идентификаторы пользователя (effective user ID) и группы, определяющие права про­цесса в системе. Обычно, действительные и эффективные идентификаторы совпадают.

Значение nice ("дружелюбность") показывает готовность процесса уступить свое про­цессорное время другим процессам. Чем больше значение nice, тем ниже приоритет процесса.

Основным средством для создания процессов является системный вызов fork. При выполнении данного вызова ядро создает новый процесс, который является копией процесса вызвавшего fork. Созданный процесс называется дочерним, а процесс осуществивший вызов fork — родитель­ским. В дочернем процессе вызов возвращает значение ноль, а в родительском он возвращает идентификатор дочернего процесса. Дочерний процесс наследует дескрипторы открытых файлов и значения переменных окружения родительского процесса.

Другой системный вызов для работы с процессами — exec. Он позволяет сменить выполня­емую программу. Вызову exec передаются в качестве аргументов имя программы которую надо выполнить и список ее аргументов. При выполнении вызова в пространство памяти вызываю­щего процесса загружается новая программа, которая запускается с начала. При выполнении вызова exec дескрипторы открытых файлов сохраняют свое значение.

Для завершения процесса используется системный вызов exit. Вызов имеет целочисленный аргумент называемый кодом завершения процесса. Как правило при успешном завершении процесса код завершения равен нулю, а в случае возникновения ошибки отличен от нуля. Роди­тельский процесс может получить статус завершения дочернего процесса выполнив системный вызов wait или waitpid.