Лекция 1 - Среда исполнения. Среда исполнения введение
Скачать 155.5 Kb.
|
Системные вызовы для доступа к среде исполнения процесса. Идентификатор процесса: - 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) может устанавливать произвольные значения uid. Все остальные могут приравнять реальный uid эффективному или эффективный реальному. - setgroups(2) устанавливает список групп доступа вызываемого процесса. Замечание: только суперпользователь может исполнять этот системный вызов. - getgroups(2) получает список групп доступа вызываемого процесса. group(1) использует getgroups(2) для печати списка групп доступа данного пользователя. - initgroups(3C) инициализирует список групп доступа всеми группами, которым принадлежит учетная запись. Только суперпользователь может выполнять этот системный вызов. . Ресурсы процесса: - getrlimit(2) получает информацию о некоторых программных и аппаратных ограничениях процесса. - setrlimit(2) устанавливает некоторые программные и аппаратные ограничения процесса. . Терминал процесса - ttyname(3C) возвращает путевое имя специального терминального файла с заданным дескриптором. Например: char *buf; buf=ttyname(0); Системные вызовы для доступа к системным параметрамВ ядре Unix есть ряд глобальных настроек, которые влияют на исполнение процессов или отдельных системных вызовов. Некоторые из этих параметров могут устанавливаться в конфигурационных файлах ядра и изменяются после перезагрузки системы. Некоторые другие параметры можно изменять только путем перекомпиляции ядра. Некоторые параметры, например, максимальная длина имени файла, зависят от файловой системы. В старых учебниках, для проверки значения этих параметров рекомендовалось использовать препроцессорные макросы, определенные в заголовочном файле Так, в Чтобы избежать перекомпиляции прикладных программ, в действующей версии стандарта POSIX были введены системные вызовы, позволяющие определить во время исполнения параметры ядра системы и налагаемые этими параметрами ограничения. Системный вызов sysconf(2) имеет один параметр, имя запрашиваемой системной переменной. Имена определены в заголовочном файле Пример - определение максимальной длины имени часового пояса (допустимое значение переменной TZ): long val; val=sysconf(_SC_TZNAME_MAX); Системные вызовы pathconf(2) и fpathconf(2) используется для получения параметров, связанных с файловой системой. Большинство из этих параметров могут быть различны для разных файловых систем, а некоторые также могут различаться и для. Поскольку в Unix практически любая директория может использоваться в качестве точки монтирования другой файловой системы, такие параметры необходимо заново запрашивать в каждой новой директории. Параметры pathconf и fpathconf fd — дескриптор открытого файла (это понятие будет обсуждаться в разделе «Файловый ввод-вывод»). Параметры будут определены для файловой системы, в которой размещен этот файл. path — путевое имя файла или каталога, определяющее файловую систему, для которой необходимо определить параметр. name — имя параметра. В качестве имен рекомендуется использовать символьные константы, определенные в Пример — определение максимальной допустимой длины путевого имени файла: long val; val=pathconf("/", _PC_PATH_MAX); |