Kniga-Online.club
» » » » Морис Бах - Архитектура операционной системы UNIX

Морис Бах - Архитектура операционной системы UNIX

Читать бесплатно Морис Бах - Архитектура операционной системы UNIX. Жанр: Программное обеспечение издательство -, год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

а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 специальный файл устройства ввода-вывода блоками

Перейти на страницу:

Морис Бах читать все книги автора по порядку

Морис Бах - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Архитектура операционной системы UNIX отзывы

Отзывы читателей о книге Архитектура операционной системы UNIX, автор: Морис Бах. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*