Архитектура операционной системы UNIX - Морис Бах
Шрифт:
Интервал:
Закладка:
аlarm
unsigned alarm(seconds)
unsigned seconds;
Функция alarm планирует посылку вызывающему ее процессу сигнала тревоги через указанное количество секунд (seconds). Она возвращает число секунд, оставшееся до посылки сигнала от момента вызова функции.
brk
int brk(end_data_seg)
char *end_data_seg;
Функция brk устанавливает верхнюю границу (старший адрес) области данных процесса в соответствии со значением параметра end_data_seg. Еще одна функция, sbrk, использует ту же точку входа и увеличивает адрес верхней границы области на указанную величину.
сhdir
chdir(filename)
char *filename;
Функция chdir делает текущим каталогом вызывающего процесса каталог, указанный в параметре filename.
сhmod
chmod(filename, mode)
char *filename;
Функция chmod изменяет права доступа к указанному файлу в соответствии со значением параметра mode, являющимся комбинацией из следующих кодов (в восьмеричной системе):
04000 бит установки кода идентификации пользователя
02000 бит установки группового кода идентификации
01000 признак sticky bit
00400 чтение владельцем
00200 запись владельцем
00100 исполнение владельцем
00040 чтение групповым пользователем
00020 запись групповым пользователем
00010 исполнение групповым пользователем
00004 чтение прочим пользователем
00002 апись прочим пользователем
00001 исполнение прочим пользователем
сhown
chown(filename, owner, group)
char *filename;
int owner,group;
Функция chown меняет коды идентификации владельца и группы для указанного файла на коды, указанные в параметрах owner и group.
сhroot
chroot(filename)
char *filename;
Функция chroot изменяет частный корень вызывающего процесса в соответствии со значением параметра filename.
сlosе
close(fildes)
int fildes;
Функция close закрывает дескриптор файла, полученный в результате выполнения функций open, creat, dup, pipe или fcntl, или унаследованный от функции fork.
сreat
creat(filename, mode)
char *filename;
int mode;
Функция creat создает новый файл с указанными именем и правами доступа. Параметр mode имеет тот же смысл, что и в функции access, при этом признак sticky-bit очищен, а разряды, установленные функцией umask, сброшены. Функция возвращает дескриптор файла для последующего использования в других функциях.
duр
dup(fildes)
int fildes;
Функция dup создает копию указанного дескриптора файла, возвращая дескриптор с наименьшим номером из имеющихся в системе. Старый и новый дескрипторы используют один и тот же указатель на файл, а также и другие совпадающие атрибуты.
ехес
execve(filename, argv, envp)
char *filename;
char *argv[];
char *envp[];
Функция execve исполняет файл с именем filename, загружая его в адресное пространство текущего процесса. Параметр argv соответствует списку аргументов символьного типа, передаваемых запускаемой программе, параметр envp соответствует массиву, описывающему среду выполнения нового процесса.
ехit
exit(status)
int status;
Функция exit завершает вызывающий процесс, возвращая его родителю 8 младших разрядов из слова состояния процесса. Ядро само может вызывать эту функцию в ответ на поступление определенных сигналов.
fcntl
fcntl(fildes, cmd, arg)
int fildes, cmd, arg;
Функция fcntl обеспечивает выполнение набора разнообразных операций по отношению к открытым файлам, идентифицируемым с помощью дескриптора fildes. Параметры cmd и arg интерпретируются следующим образом (определение буквенных констант хранится в файле "/usr/include/fcntl.h"):
F_DUPFD вернуть наименьшее значение дескриптора, большее или равное значению arg
F_SETFD установить флаг "close-on-exec" в младшем разряде arg (файл будет закрыт функцией exec)
F_GETFD вернуть состояние флага "close-on-exec"
F_SETFL установить флаги, управляющие состоянием файла (O_NDELAY — не приостанавливаться в ожидании завершения ввода-вывода, O_APPEND — записываемые данные добавлять в конец файла)
F_GETFL получить значения флагов, управляющих состоянием файла
struct flock
short l_type; /* F_RDLCK — блокировка чтения, F_WRLCK — блокировка записи, F_UNLCK — снятие блокировки */
short l_whence; /* адрес начала блокируемого участка дается в виде смещения относительно начала файла (0), относительно текущей позиции указателя (1), относительно конца файла (2) */
long l_start; /* смещение в байтах, интерпретируемое в соответствии со значением l_whence */
long l_len; /* длина блокируемого участка в байтах. Если указан 0, блокируется участок от l_start до конца файла */
long l_pid; /* идентификатор процесса, блокирующего файл */
long l_sysid; /* системный идентификатор процесса, блокирующего файл */
F_GETLK прочитать первый код блокировки, мешающей использовать значение arg и затирать его. Если блокировка отсутствует, поменять значение l_type в arg на F_UNLCK
F_SETLK установить или снять блокировку файла в зависимости от значения arg. В случае невозможности установить блокировку вернуть -1
F_SETLKW установить или снять блокировку содержащихся в файле данных в зависимости от значения arg. В случае невозможности установить блокировку приостановить выполнение
Блокировки, связанные с чтением из файла, могут перекрывать друг друга. Блокировки, связанные с записью, перекрываться не могут.
fork
fork()
Функция fork создает новый процесс. Порождаемый процесс представляет собой логическую копию процесса-родителя. На выходе из функции процессу-родителю возвращается код идентификации потомка, потомку — нулевое значение.
getpid
getpid()
Функция getpid возвращает идентификатор вызывающего процесса. Эту же точку входа используют функции: getpgrp, возвращающая идентификатор группы, в которую входит вызывающий процесс, и getppid, возвращающая идентификатор процесса, который является родителем текущего процесса.
getuid
getuid()
Функция getuid возвращает фактический код идентификации пользователя вызывающего процесса. Эту же точку входа используют функции: geteuid, возвращающая исполнительный код идентификации пользователя, getgid, возвращающая групповой код, и getegid, возвращающая исполнительный групповой код идентификации вызывающего процесса.
ioctl
ioctl(fildes, cmd, arg)
int fildes, cmd;
Функция ioctl выполняет набор специальных операций по отношению к открытому устройству, дескриптор которого указан в параметре fildes. Тип команды, выполняемой по отношению к устройству, описывается параметром cmd, а параметр arg является аргументом команды.
kill
kill(pid, sig)
int pid, sig;
Функция kill посылает процессам, идентификаторы которых указаны в параметре pid, сигнал, описываемый параметром sig.
pid имеет положительное значение сигнал посылается процессу с идентификатором pid
pid = 0 сигнал посылается процессам, групповой идентификатор которых совпадает с идентификатором отправителя
pid = -1 если процесс-отправитель исполняется под идентификатором суперпользователя, сигнал посылается всем процессам, в противном случае, сигнал посылается процессам, фактический код идентификации пользователя у которых совпадает с идентификатором суперпользователя
pid ‹ -1 сигнал посылается процессам, групповой идентификатор которых совпадает с pid
Исполнительный код идентификации пользователя процесса-отправителя должен указывать на суперпользователя, в противном случае, фактический или исполнительный коды идентификации отправителя должны совпадать с соответствующими кодами процессов-получателей.
link
link(filename1, filename2)
char *filename1,*filename2;
Функция link присваивает файлу filename1 новое имя filename2. Файл становится доступным под любым из этих имен.
lseek
lseek(fildes, offset, origin)
int fildes, origin;
long offset;
Функция lseek изменяет положение указателя чтения-записи для файла с дескриптором fildes и возвращает новое значение. Положение указателя зависит от значения параметра origin:
0 установить указатель на позицию, соответствующую указанному смещению в байтах от начала файла
1 сдвинуть указатель с его текущей позиции на указанное смещение
2 установить указатель на позицию, соответствующую указанному смещению в байтах от конца файла
мknod
mknod(filename, modes, dev)
char *filename;
int mode, dev;
Функция mknod создает специальный файл, каталог или поименованный канал (очередь по принципу "первым пришел — первым вышел") в зависимости от значения параметра modes:
010000 поименованный канал
020000 специальный файл устройства ввода-вывода символами
040000 каталог
060000 специальный файл устройства ввода-вывода блоками