[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Получение/установка идентификатора группы процессов

Группа процессов - это совокупность процессов с одним и тем же
идентификатором группы процессов. Управляющий терминал считает одну из
групп процессов в сессии группой основных процессов. Все процессы в
основной группе будут получать сигналы, относящиеся к терминалу, такие
как SIGINT и SIGQUIT.
Новый идентификатор группы процессов может быть создан вызовом
setpgid(2). Группы процессов, отличные от основной группы той же
сессии, считаются группами фоновых процессов. ksh использует группы
процессов для управления заданиями. Фоновые процессы не получают
сигналов, генерируемых терминалом. Системный вызов setpgid(2)
устанавливает идентификатор группы процессов следующим образом:

                pid == pgid  создается  группа  процессов  с
                             идентификатором,  равным   pid;
                             вызвавший  процесс   становится
                             лидером этой группы

                pid != pgid  процесс pid  становится  членом
                             группы процессов pgid


Если pid равен 0, будет использован идентификатор вызывающего
процесса. Если pgid равен нулю, процесс с идентификатором pid станет
лидером группы процессов. pid должен задавать процесс, принадлежащий к
той же сессии, что и вызывающий.
Идентификатор группы процессов - атрибут, наследуемый порожденными
процессами. Процесс может определить свой идентификатор группы,
вызывая getpgrp(2) или getpgid(2).
Системный вызов waitid(2) и библиотечная функция waitpid(3C) могут
использоваться для ожидания подпроцессов, принадлежащих определенной
группе. Кроме того, можно послать сигнал всем процессам в заданной
группе.
В ksh для каждой исполняемой команды создается новая группа процессов.
В sh все процессы принадлежат к одной группе, если только сам процесс
не исполнит setsid(2) или setpgid(2).
Новое в SVR4: setpgid(2) заменяет setpgrp(2)

         ПОЛУЧЕНИЕ/УСТАНОВКА ИДЕНТИФИКАТОРА ГРУППЫ ПРОЦЕССОВ
setpgid(2)

ИМЯ

      setpgid - установить идентификатор группы процессов

ИСПОЛЬЗОВАНИЕ

      #include <sys/types.h>
      #include <unistd.h>

      int setpgid(void);

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

      успех - 0

      неуспех - -1 и errno установлена


getpgid(2)

ИМЯ

      getpgid - получение идентификатора группы процессов

ИСПОЛЬЗОВАНИЕ

      #include <sys/types.h>
      #include <unistd.h>

      pid_t getpgid(pid_t pid);

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

      успех - идентификатор группы процессов

      неуспех - -1 и errno установлена