[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Как получить доступ к среде исполнения (Си-программа)

В Си-программе  можно получить  прямой доступ только к той части среды
исполнения, которая  сохраняется в  стеке или  во внешних  переменных.
Доступ и  изменение  всей  остальной  информация  может  производиться
только с помощью системных вызовов или библиотечных функций.
.  Идентификатор процесса
   - getpid(2)   возвращает    идентификатор    процесса.    Например:
     pid=getpid();
   - getppid(2)  возвращает   идентификатор  родительского   процесса.
     Например: ppid=getppid();
   - getpgid(2)  возвращает   идентификатор   группы   для   процесса,
     идентификатор которого  равен pid,  или для вызывающего процесса,
     если pid  равен 0.  Например: pgid=getpgid(0);  Замечание: группы
     процессов обсуждаются позже в этом курсе.
   - setpgid(2) устанавливает  идентификатор группы процесса.
   - getsid(2)   возвращает   идентификатор   сессии   для   процесса,
     идентификатор которого  равен pid,  или для вызывающего процесса,
     если   pid   равен   0.   Например:   sid=getsid(0);   Замечание:
     идентификатор сессии обсуждается позже в этом курсе.
   - setsid(2)   устанавливает    идентификаторы   группы   и   сессии
     вызывающего  процесса  равными  значению  идентификатора  данного
     процесса и освобождает управляющий терминал.
.  Идентификаторы пользователя и группы
   - getuid(2)   возвращает   реальный   идентификатор   пользователя.
     Например: uid=getuid();
   - geteuid(2)  возвращает  эффективный  идентификатор  пользователя.
     Например:   euid=geteuid();    Замечание:   обычно   реальный   и
     эффективный идентификаторы  совпадают. Обсуждение  бита установки
     идентификатора пользователя приведено ниже.
   - getgid(2) возвращает  реальный  идентификатор  группы.  Например:
     gid=getgid();
   - getegid(2) возвращает эффективный идентификатор группы. Например:
     egid=getegid(2);
   - setuid(2), setgid(2)  устанавливают идентификаторы пользователя и
     группы. Замечание:  только суперпользователь  (super-user)  может
     делать любые  установки. Все остальные могут устанавливать только
     свой реальный  пользовательский идентификатор.  Более подробно об
     этом при обсуждении бита установки идентификатора пользователя.
   - setgroups(2)  устанавливает   список  групп  доступа  вызываемого
     процесса. Замечание:  только  суперпользователь  может  исполнять
     этот системный вызов.
   - getgroups(2) получает  список групп доступа вызываемого процесса.
     group(1) использует  getgroups(2) для печати списка групп доступа
     данного пользователя.
   - initgroups(3C)  инициализирует   список   групп   доступа   всеми
     группами, которым  принадлежит  login.  Только  суперпользователь
     может выполнять этот системный вызов.
.  Ресурсы процесса
   - getrlimit(2)  получает   информацию  о  некоторых  программных  и
     аппаратных ограничениях процесса.
   - setrlimit(2) устанавливает  некоторые  программные  и  аппаратные
     ограничения процесса.
.  Терминал процесса
   - ttyname(3C) возвращает  путевое  имя  специального  терминального
     файла   с    заданным   дескриптором.    Например:   char   *buf;
     buf=ttyname(0);

Новое  для   SRV4:  setpgid(2),  getsid(2),  setsid(2),  setgroups(2),
getgroups(2), initgroups(3C), getrlimit(2) и setrlimit(2).
                Как получить доступ к среде исполнения
                            (Си-программа)


Информация                              Метод

Идентификатор процесса                  getpid(2)
                                        getppid(2)
                                        getpgid(2)
                                        setpgid(2)
                                        getsid(2)
                                        setsid(2)

Пользователь/группа                     getuid(2)
                                        geteuid(2)
                                        getgid(2)
                                        getegid(2)
                                        setuid(2)
                                        setgroups(2)+
                                        getgroups(2)
                                        initgroups(3C)+

Ресурсы процесса                        getrlimit(2)
                                        setrlimit(2)

Терминал процесса                       ttyname(3C)

должен быть суперпользователем