Основы операционных систем. Практикум



         

Понятия группы процессов, сеанса - часть 4


/p>

Процесс, идентификатор которого совпадает с идентификатором его группы, называется лидером группы. Одно из ограничений на применение вызовов setpgid() и setpgrp() состоит в том, что лидер группы не может перебраться в другую группу.

Каждый сеанс в системе также имеет собственный номер. Для того чтобы узнать его, можно воспользоваться системным вызовом getsid(). В разных версиях UNIX на него накладываются различные ограничения. В Linux такие ограничения отсутствуют.

Системный вызов getsid()

Прототип системного вызова

#include <sys/types.h> #include <unistd.h> pid_t getsid(pid_t pid);

Описание системного вызова

Системный вызов возвращает идентификатор сеанса для процесса с идентификатором pid. Если параметр pid равен 0, то возвращается идентификатор сеанса для данного процесса

Тип данных pid_t является синонимом для одного из целочисленных типов языка C.

Использование системного вызова setsid() приводит к созданию новой группы, состоящей только из процесса, который его выполнил (он становится лидером новой группы), и нового сеанса, идентификатор которого совпадает с идентификатором процесса, сделавшего вызов. Такой процесс называется лидером сеанса. Этот системный вызов может применять только процесс, не являющийся лидером группы.

Системный вызов setsid()

Прототип системного вызова

#include <sys/types.h> #include <unistd.h> int setsid(void);

Описание системных вызовов

Этот системный вызов может применять только процесс, не являющийся лидером группы, т.е. процесс, идентификатор которого не совпадает с идентификатором его группы. Использование системного вызова setsid приводит к созданию новой группы, состоящей только из процесса, который его выполнил (он становится лидером новой группы), и нового сеанса, идентификатор которого совпадает с идентификатором процесса, сделавшего вызов.

Возвращаемое значение

Системный вызов возвращает значение 0 при нормальном завершении и значение -1 при возникновении ошибки.

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


Содержание  Назад  Вперед