[<<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)
должен быть суперпользователем