приложение. Системные операции в приложении дается краткий обзор функций системы unix. Полное описание этих функций содержится в руководстве программиста-пользователя версии V системы unix




Названиеприложение. Системные операции в приложении дается краткий обзор функций системы unix. Полное описание этих функций содержится в руководстве программиста-пользователя версии V системы unix
страница1/16
Дата конвертации18.12.2012
Размер108.62 Kb.
ТипТексты
  1   2   3   4   5   6   7   8   9   ...   16
ПРИЛОЖЕНИЕ. СИСТЕМНЫЕ ОПЕРАЦИИ
В приложении дается краткий обзор функций системы UNIX. Полное описание этих функций содержится в руководстве программиста-пользователя версии V системы UNIX. Сведений, приведенных здесь, вполне достаточно для того, чтобы разобраться в примерах программ, представленных в книге.
Имена файлов, упоминаемые в тексте, представляют собой последовательнос- ти символов, завершающиеся пустым символом и состоящие из компонент, разде- ленных наклонной чертой. В случае ошибки все функции возвращают код заверше- ния, равный -1, а код самой ошибки засылается в переменную errno, имеющую тип external. В случае успешного завершения код возврата имеет значение, равное 0. Некоторые из обращений к операционной системе являются точкой вхо- да сразу для нескольких функций: это означает, что данные функции используют один и тот же ассемблерный интерфейс. Приводимый список функций удовлетворя- ет стандартным условиям, принятым в справочных руководствах по системе UNIX, при этом вопросы, связанные с тем, является ли одно обращение к операционной системе точкой входа для одной или нескольких функций, рассматриваются от- дельно.

access
______________________________
access(filename,mode)
char *filename;
int mode;

Функция access проверяет, имеет ли процесс разрешение на чтение, запись или исполнение файла (проверяемый тип доступа зависит от значения параметра mode). Значение mode является комбинацией двоичных масок 4 (для чтения), 2 (для записи) и 1 (для исполнения). Вместо исполнительного кода идентификации пользователя в проверке участвует фактический код.
acct
______________________________
acct(filename)
char *filename;

Функция acct включает учет системных ресурсов, если параметр filename непустой, и выключает - в противном случае.
аlarм
______________________________
unsigned alarm(seconds)
unsigned seconds;

Функция alarm планирует посылку вызывающему ее процессу сигнала тревоги через указанное количество секунд (seconds). Она возвращает число секунд, оставшееся до посылки сигнала от момента вызова функции.
400
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 исполнение прочим пользователем
сhowп
______________________________
chown(filename,owner,group) char *filename;
int owner,group;

Функция chown меняет коды идентификации владельца и группы для указанно- го файла на коды, указанные в параметрах owner и group.
сhroot
______________________________
401
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, сброшены. Функ- ция возвращает дескриптор файла для последующего использования в других фун- кциях.

dир
______________________________
dup(fildes)
int fildes;

Функция dup создает копию указанного дескриптора файла, возвращая деск- риптор с наименьшим номером из имеющихся в системе. Старый и новый дескрип- торы используют один и тот же указатель на файл, а также и другие совпадаю- щие атрибуты.

ехес
______________________________
execve(filename,argv,envp) char *filename;
char *argv[];
char *envp[];

Функция execve исполняет файл с именем filename, загружая его в адресное пространство текущего процесса. Параметр argv соответствует списку аргумен- тов символьного типа, передаваемых запускаемой программе, параметр envp со- ответствует массиву, описывающему среду выполнения нового процесса.
402 ех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
403
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
______________________________
404
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
______________________________
405
mknod(filename,modes,dev) char *filename;
int mode,dev;

Функция mknod создает специальный файл, каталог или поименованный канал (очередь по принципу "первым пришел - первым вышел") в зависимости от значе- ния параметра modes:

010000 поименованный канал 020000 специальный файл устройства ввода-вывода символами 040000 каталог
060000 специальный файл устройства ввода-вывода блоками
12 младших разрядов параметра modes имеют тот же самый смысл, что и в функции chmod. Если файл имеет специальный тип, параметр dev содержит стар- ший и младший номера устройства.
мount
______________________________
mount(specialfile,dir,rwflag) char *specialfile,*dir;
int rwflag;

Функция mount выполняет монтирование файловой системы, на которую указы- вает параметр specialfile, в каталоге dir. Если младший бит параметра rwflag установлен, файловая система монтируется только для чтения.
мsgctl
______________________________
#include
#include
#include
msgctl(id,cmd,buf)
int id,cmd;
struct msgid_ds *buf;

В зависимости от операции, указанной в параметре cmd, функция msgctl да- ет процессам возможность устанавливать или запрашивать информацию о статусе очереди сообщений с идентификатором id, а также удалять очередь из системы.
Структура msquid_ds определена следующим образом:
struct ipc_perm {
ushort uid; /* идентификатор текущего пользователя */ ushort gid; /* идентификатор текущей группы */ ushort cuid; /* идентификатор пользователя-создателя */ ushort cgid; /* идентификатор группы создателя */ ushort mode; /* права доступа */ short pad1; /* используется системой */ long pad2; /* используется системой */ };

struct msquid_ds {
struct ipc_perm msg_perm; /* структура, описывающая права доступа */
406
short pad1[7]; /* используется системой */ ushort msg_qnum; /* количество сообщений в очереди */ ushort msg_qbytes; /* максимальный размер очереди в байтах */ ushort msg_lspid; /* идентификатор процесса, связанного с последней посылкой сообщения */ ushort msg_lrpid; /* идентификатор процесса, связанного с последним получением сообщения */ time_t msg_stime; /* время последней посылки сообщения */ time_t msg_rtime; /* время последнего полу- чения сообщения */ time_t msg_ctime; /* время последнего изме- нения */ };

Типы операций:

IPC_STAT Прочитать в буфер заголовок очереди сообщений, ас- социированный с идентификатором id IPC_SET Установить значения переменных msg_perm.uid,
msg_perm.gid, msg_perm.mode (9 младших разрядов структуры msg_perm) и mgr_qbytes в соответствии со значениями, содержащимися в буфере IPC_RMID Удалить из системы очередь сообщений с идентифика- тором id

мsgget
______________________________
#include
#include
#include
msgget(key,flag)
key_t key;
int flag;

Функция msgget возвращает идентификатор очереди сообщений, имя которой указано в key. Параметр key может указывать на то, что возвращаемый иденти- фикатор относится к частной очереди (IPC_PRIVATE), в этом случае создается новая очередь сообщений. С помощью параметра flag можно сделать указание о необходимости создания очереди (IPC_CREAT), а также о том, что создание оче- реди должно выполняться монопольно (IPC_EXCL). В последнем случае, если оче- редь уже существует, функция msgget дает отказ.
мsgsnd и msgrcv
______________________________
#include
#include
#include
msgsnd(id,msgp,size,flag)
407
int id,size,flag;
struct msgbuf *msgp;

msgrcv(id,msgp,size,type,flag) int id,size,type,flag;
struct msgbuf *msgmp;

Функция msgsnd посылает сообщение указанного размера в байтах (size) из буфера msgp в очередь сообщений с идентификатором id. Структура msgbuf опре- делена следующим образом:

struct msgbuf {
long mtype;
char mtext[];
};

Если в параметре flag бит IPC_NOWAIT сброшен, функция msgsnd будет при- останавливаться в тех случаях, когда размер отдельного сообщения или число сообщений в системе превышают допустимый максимум. Если бит IPC_NOWAIT уста- новлен, функция msgsnd в этих случаях прерывает свое выполнение.
Функция msgrcv принимает сообщение из очереди с идентификатором id. Если параметр type имеет нулевое значение, из очереди будет выбрано сообщение, первое по счету; если положительное значение, из очереди выбирается первое сообщение данного типа; если отрицательное значение, из очереди выбирается сообщение, имеющее самый младший тип среди тех типов, значение которых не превышает абсолютное значение параметра type. В параметре size указывается максимальный размер сообщения, ожидаемого пользователем. Если в параметре flag установлен бит MSG_NOERROR, в том случае, когда размер получаемого со- общения превысит предел, установленный параметром size, ядро обрежет это со- общение. Если же соответствующий бит сброшен, в подобных случаях функция бу- дет возвращать ошибку. Если в параметре flag бит IPC_NOWAIT сброшен, функция msgrcv приостановит свое выполнение до тех пор, пока сообщение, удовлетворя- ющее указанному в параметре type условию, не будет получено. Если соответст- вующий бит сброшен, функция завершит свою работу немедленно. Функция msgrcv возвращает размер полученного сообщения (в байтах).
пiсе
______________________________
nice(increment)
int increment;

Функция nice увеличивает значение соответствующей компоненты, участвую- щей в вычислении приоритета планирования текущего процесса, на величину increment. Увеличение значения nice ведет к снижению приоритета планирова-
ния.

оpeп
______________________________
#include
open(filename,flag,mode)
char *filename;
int flag,mode;

Функция open выполняет открытие указанного файла в соответствии со зна-
408
чением параметра flag. Значение параметра flag представляет собой комбинацию из следующих разрядов (причем из первых трех разрядов может быть использован только один):

O_RDONLY открыть только для чтения O_WRONLY открыть только для записи O_RDWR открыть для чтения и записи O_NDELAY если файл является специальным файлом устрой- ства, функция возвращает управление, не дожида- ясь ответного сигнала; если файл является поиме- нованным каналом, функция в случае неудачи возвращает управление немедленно (с индикацией ошибки, когда бит O_WRONLY установлен), не дожи- даясь открытия файла другим процессом O_APPEND добавляемые данные записывать в конец файла O_CREAT если файл не существует, создать его; режим соз- дания (mode) имеет тот же смысл, что и в функции creat; если файл уже существует, данный флаг иг- норируется
O_TRUNC укоротить длину файла до 0 O_EXCL если этот бит и бит O_CREAT установлены и файл существует, функция не будет выполняться; это так называемое "монопольное открытие"
Функция open возвращает дескриптор файла для последующего использования в других системных функциях.

рausе
______________________________
pause()

Функция pause приостанавливает выполнение текущего процесса до получения сигнала.

рipе
______________________________
pipe(fildes)
int fildes[2];

Функция pipe возвращает дескрипторы чтения и записи (соответственно, в fildes[0] и fildes[1]) для данного канала. Данные передаются через канал в порядке поступления; одни и те же данные не могут быть прочитаны дважды.
рlock
______________________________
#include
plock(op)
int op;

Функция plock устанавливает и снимает блокировку областей процесса в па- мяти в зависимости от значения параметра op:
409
PROCLOCK заблокировать в памяти области команд и данных TXTLOCK заблокировать в памяти область команд DATLOCK заблокировать в памяти область данных UNLOCK снять блокировку всех областей
рrofil
______________________________
profil(buf,size,offset,scale) char *buf;
int size,offset,scale;

Функция profil запрашивает у ядра профиль выполнения процесса. Параметр buf определяет массив, накапливающий число копий процесса, выполняющихся в разных адресах. Параметр size определяет размер массива buf, offset - на- чальный адрес участка профилирования, scale - коэффициент масштабирования.
рtraсе
______________________________
ptrace(cmd,pid,addr,data) int cmd,pid,addr,data;

Функция ptrace дает текущему процессу возможность выполнять трассировку другого процесса, имеющего идентификатор pid, в соответствии со значением параметра cmd:

0 разрешить трассировку потомку (по его указанию) 1,2 вернуть слово, расположенное по адресу addr в прост- ранстве трассируемого процесса с идентификатором pid 3 вернуть слово, расположенное в пространстве трассиру- емого процесса по адресу со смещением addr 4,5 записать значение по адресу addr в пространстве трас- сируемого процесса
6 записать значение по адресу со смещением addr 7 заставить трассируемый процесс возобновить свое вы- полнение
8 заставить трассируемый процесс завершить свое выпол- нение
9 машинно-зависимая команда - установить в слове состо- яния программы бит для отладки в режиме пошагового выполнения

read
______________________________
read(fildes,buf,size)
int fildes;
char *buf;
int size;

Функция read выполняет чтение из файла с дескриптором fildes в пользова- тельский буфер buf указанного в параметре size количества байт. Функция воз- вращает число фактически прочитанных байт. Если файл является специальным файлом устройства или каналом и если в вызове функции open был установлен бит O_NDELAY, функция read в случае отсутствия доступных для чтения данных
410
возвратит управление немедленно.
semctl
______________________________
#include
#include
#include
semctl(id,num,cmd,arg)
int id,num,cmd;
union semun {
int val;
struct semid_ds *buf;
ushort *array;
} arg;

Функция semctl выполняет указанную в параметре cmd операцию над очередью семафоров с идентификатором id.
GETVAL вернуть значение того семафора, на который указы- вает параметр num SETVAL установить значение семафора, на который указыва- ет параметр num, равным значению arg.val
GETPID вернуть идентификатор процесса, выполнявшего пос- ледним функцию semop по отношению к тому семафо- ру, на который указывает параметр num GETNCNT вернуть число процессов, ожидающих того момента, когда значение семафора станет положительным GETZCNT вернуть число процессов, ожидающих того момента, когда значение семафора станет нулевым GETALL вернуть значения всех семафоров в массиве arg.array
SETALL установить значения всех семафоров в соответствие с содержимым массива arg.array IPC_STAT считать структуру заголовка семафора с идентифи- катором id в буфер arg.buf
IPC_SET установить значения переменных sem_perm.uid,
sem_perm.gid и sem_perm.mode (младшие 9 разрядов структуры sem_perm) в соответствии с содержимым буфера arg.buf
IPC_RMID удалить семафоры, связанные с идентификатором id, из системы

Параметр num возвращает на количество семафоров в обрабатываемом наборе.
Структура semid_ds определена следующим образом:
struct semid_ds {
struct ipc_perm sem_perm; /* структура, описыва- ющая права досту- па */ int * pad; /* используется систе- мой */ ushort sem_nsems; /* количество семафо- ров в наборе */ time_t sem_otime; /* время выполнения последней операции над семафором */
411
time_t sem_ctime; /* время последнего изменения */ };

Структура ipc_perm имеет тот же вид, что и в функции msgctl.
semget
______________________________
#include
#include
#include
semget(key,nsems,flag)
key_t key;
int nsems,flag;

Функция semget создает массив семафоров, корреспондирующий с параметром
key. Параметры key и flag имеют тот же смысл, что и в функции msgget.
seмор
______________________________
semop(id,ops,num)
int id,num;
struct sembuf **ops;

Функция semop выполняет набор операций, содержащихся в структуре ops, над массивом семафоров, связанных с идентификатором id. Параметр num содер- жит количество записей, составляющих структуру ops. Структура sembuf опреде- лена следующим образом:

struct sembuf {
short sem_num; /* номер семафора */ short sem_op; /* тип операции над семафором */ short sem_flg; /* флаг */ };

Переменная sem_num содержит указатель в массиве семафоров, ассоциирован- ный с данной операцией, а переменная sem_flg - флаги для данной операции.
Переменная sem_op может принимать следующие значения:
отрицательное если сумма значения семафора и значения sem_op >= 0, значение семафора изменяется на величину sem_op; в противном случае, функция приостанавливает свое выполнение, если это разрешено флагом положительное увеличить значение семафора на величину sem_op
нулевое если значение семафора равно 0, продол- жить выполнение; в противном случае, при- остановить выполнение, если это разреша- ется флагом
Если для данной операции в переменной sem_flg установлен флаг IPC_NOWAIT, функция semop возвращает управление немедленно в тех случаях, когда она должна была бы приостановиться. Если установлен флаг SEM_UNDO,
412
восстанавливается предыдущее значение семафора (sem_op вычитается из текущей суммы типов операций). Когда процесс завершится, значение семафора будет увеличено на эту сумму. Функция semop возвращает значение последней операции над семафором.

setpgrр
______________________________
setpgrp()

Функция setpgrp приравнивает значение идентификатора группы, к которой принадлежит текущий процесс, значению идентификатора самого процесса и возв- ращает новое значение идентификатора группы.
setuid
______________________________
setuid(uid)
int uid;

setgid(gid)
int gid;

Функция setuid устанавливает значения фактического и исполнительного ко- дов идентификации пользователя текущего процесса. Если вызывающий процесс исполняется под управлением суперпользователя, функция сбрасывает значения указанных кодов. В противном случае, если фактический код идентификации пользователя имеет значение, равное значению uid, функция setuid делает рав- ным этому значению и исполнительный код идентификации пользователя. То же самое происходит, если значению uid равен код, сохраненный после выполнения setuid-программы, запускаемой с помощью функции exec. Функция setgid имеет тот же смысл по отношению к аналогичным групповым кодам.
shmctl
______________________________
#include
#include
#include
shmctl(id,cmd,buf)
int id,cmd;
struct shmid_ds *buf;

Функция shmctl выполняет различные операции над областью разделяемой па- мяти, ассоциированной с идентификатором id. Структура shmid_ds определена следующим образом:

struct shmid_ds {
struct ipc_perm shm_perm; /* структура, описываю- щая права доступа */ int shm_segsz; /* размер сегмента */ int * pad1; /* используется систе- мой */ ushort shm_lpid; /* идентификатор про- цесса, связанного с
413
последней операцией над областью */ ushort shm_cpid; /* идентификатор про- цесса-создателя */ ushort shm_nattch; /* количество присоеди- нений к процессам */ short pad2; /* используется систе- мой */ time_t shm_atime; /* время последнего присоединения */ time_t shm_dtime; /* время последнего отсоединения */ time_t shm_ctime; /* время последнего внесения измене- ний */ };

Операции:

IPC_STAT прочитать в буфер buf содержимое заголовка об- ласти, ассоциированной с идентификатором id IPC_SET установить значения переменных shm_perm.uid,
shm_perm.gid и shm_perm.mode (9 младших разря- дов структуры) в заголовке области в соответс- твии с содержимым буфера buf IPC_RMID удалить из системы область разделяемой памяти, ассоциированной с идентификатором id
shmget
______________________________
#include
#include
#include
shmget(key,size,flag)
key_t key;
int size,flag;

Функция shmget обращается к области разделяемой памяти или создает ее.
Параметр size задает размер области в байтах. Параметры key и flag имеют тот же смысл, что и в функции msgget.
shмор
______________________________
#include
#include
#include
shmat(id,addr,flag)
int id,flag;
char *addr;

shmdt(addr)
char *addr;

414
Функция shmat присоединяет область разделяемой памяти, ассоциированную с идентификатором id, к адресному пространству процесса. Если параметр addr имеет нулевое значение, ядро само выбирает для присоединения области подхо- дящий адрес. В противном случае оно пытается присоединить область, используя в качестве значение параметра addr в качестве адреса. Если в параметре flag установлен бит SHM_RND, ядро в случае необходимости округляет адрес. Функция shmat возвращает адрес, по которому область присоединяется фактически.
Функция shmdt отсоединяет область разделяемой памяти, присоединенную ра- нее по адресу addr.

signal
______________________________
#include
signal(sig,function)
int sig;
void (*func)();

Функция signal дает текущему процессу возможность управлять обработкой сигналов. Параметр sig может принимать следующие значения:
SIGHUP "зависание"
SIGINT прерывание
SIGQUIT прекращение работы SIGILL запрещенная команда SIGTRAP внутреннее прерывание, связанное с трассировкой SIGIOT инструкция IOT
SIGEMT инструкция EMT
SIGFPE особая ситуация при работе с числами с плавающей запятой SIGKILL удаление из системы SIGBUS ошибка в шине
SIGSEGV нарушение сегментации SIGSYS недопустимый аргумент в вызове системной функции SIGPIPE запись в канал при отсутствии считывающих процессов SIGALRM сигнал тревоги
SIGTERM завершение программы SIGUSR1 сигнал, определяемый пользователем SIGUSR2 второй сигнал, определяемый пользователем SIGCLD гибель потомка
SIGPWR отказ питания

Параметр function интерпретируется следующим образом:
SIG_DFL действие по умолчанию. Означает завершение про- цесса в случае поступления любых сигналов, за ис- ключением SIGPWR и SIGCLD. Если сигнал имеет тип SIGQUIT, SIGILL, SIGTRAP, SIGIOT, SIGEMT, SIGFPE, SIGBUS, SIGSEGV или SIGSYS, создается файл "core", содержащий дамп образа процесса в памяти SIG_IGN игнорировать поступление сигнала функция адрес процедуры в пространстве процесса. По воз- вращении в режим задачи производится обращение к указанной функции с передачей ей номера сигнала в качестве аргумента. Если сигнал имеет тип, отлич- ный от SIGILL, SIGTRAP и SIGPWR, ядро автомати- чески переустанавливает имя программы обработки сигнала в SIG_DFL. Сигналы типа SIGKILL процессом не обрабатываются
415
.te1 stat
______________________________
stat(filename,statbuf)
char *filename;
struct stat *statbuf;

fstat(fd,statbuf)
int fd;
struct stat *statbuf;

Функция stat возвращает информацию о статусе (состоянии) указанного фай-
ла. Функция fstat выполняет то же самое в отношении открытого файла, имеюще- го дескриптор fd. Структура statbuf определена следующим образом:
struct stat {
dev_t st_dev; /* номер устройства, на котором на- ходится файл */ ino_t st_ino; /* номер индекса */ ushort st_mode; /* тип файла (см. mknod) и права доступа к нему (см. chmod) */ short st_nlink; /* число связей, указывающих на файл */ ushort st_uid; /* код идентификации владельца файла */ ushort st_gid; /* код идентификации группы */ dev_t st_rdev; /* старший и младший номера устройства */ off_t st_size; /* размер в байтах */ time_t st_atime; /* время последнего обращения */ time_t st_mtime; /* время последнего внесения изменений */ time_t st_ctime; /* время последнего изменения статуса */ };

stiме
______________________________
stime(tptr)
long *tptr;

Функция stime устанавливает системное время и дату в соответствие со значением, указанным в параметре tptr. Время указывается в секундах от 00:00:00 1 января 1970 года по Гринвичу.
syпс
______________________________
sync()

Функция sync выгружает содержащуюся в системных буферах информацию (от- носящуюся к файловой системе) на диск.
tiме
______________________________
time(tloc)

416
long *tloc;

Функция time возвращает системное время в секундах от 00:00:00 1 января 1970 года по Гринвичу.

times
______________________________
#include
#include
times(tbuf)
struct tms *tbuf;

Функция times возвращает время в таймерных тиках, реально прошедшее с любого произвольного момента в прошлом, и заполняет буфер tbuf следующей учетной информацией:

struct tms {
time_t tms_utime; /* продолжительность использова- ния ЦП в режиме задачи */ time_t tms_stime; /* продолжительность использова- ния ЦП в режиме ядра */ time_t tms_cutime; /* сумма значений tms_utime и tms_cutime у потомков */ time_t tms_sutime; /* сумма значений tms_stime и tms_sutime у потомков */ };

иlimit
______________________________
ulimit(cmd,limit)
int cmd;
long limit;

Функция ulimit дает процессу возможность устанавливать различные ограни- чения в зависимости от значения параметра cmd:
1 вернуть максимальный размер файла (в блоках по 512 байт), в который процесс может вести запись 2 установить ограничение сверху на размер файла равным значению пара- метра limit
3 вернуть значение верхней точки прерывания (максимальный доступный адрес в области данных)
имask
______________________________
umask(mask)
int mask;

Функция umask устанавливает значение маски, описывающей режим создания файла (mask), и возвращает старое значение. При создании файла биты разреше- ния доступа, которым соответствуют установленные разряды в mask, будут сбро-
шены.

417
имount
______________________________
umount(specialfile)
char *specialfile

Функция umount выполняет демонтирование файловой системы, расположенной на устройстве ввода-вывода блоками specialfile.
ипaме
______________________________
#include
uname(name)
struct utsname *name;

Функция uname возвращает информацию, идентифицирующую систему в соответ- ствии со следующей структурой:

struct utsname {
char sysname[9]; /* наименование */ char nodename[9]; /* имя сетевого узла */ char release[9]; /* информация о версии системы */ char version[9]; /* дополнительная информация о версии */ char machine[9]; /* технический комплекс */ };

ипlink
______________________________
unlink(filename)
char *filename;

Функция unlink удаляет из каталога запись об указанном файле.
иstat
______________________________
#include
#include
  1   2   3   4   5   6   7   8   9   ...   16

Похожие:

приложение. Системные операции в приложении дается краткий обзор функций системы unix. Полное описание этих функций содержится в руководстве программиста-пользователя версии V системы unix iconприложение. Системные операции в приложении дается краткий обзор функций системы unix. Полное описание этих функций содержится в руководстве программиста-пользователя версии V системы unix
В приложении дается краткий обзор функций системы unix. Полное описание этих функций содержится в руководстве программиста-пользователя...
приложение. Системные операции в приложении дается краткий обзор функций системы unix. Полное описание этих функций содержится в руководстве программиста-пользователя версии V системы unix iconУчебное пособие по курсу осиС. 01. spx Вводная, список литературы. Что такое Unix и unix-подобные системы. Ядро и пользовательские программы. Системные вызовы
Обзор подсистем ядра: файловая, управления процессами, ввода-вывода. Unix для пользователя: базовые понятия и интерфейс (командная...
приложение. Системные операции в приложении дается краткий обзор функций системы unix. Полное описание этих функций содержится в руководстве программиста-пользователя версии V системы unix iconВот несколько основных приемов, которые должны облегчить Вам освоение новой для Вас оболочки unix и ее системы команд
Сен-97] Руководство начинающего пользователя системы sdf unix-системы публичного доступа
приложение. Системные операции в приложении дается краткий обзор функций системы unix. Полное описание этих функций содержится в руководстве программиста-пользователя версии V системы unix iconLinux происходит от операционной системы Unix
В равной степени можно было бы изучать Freebsd, Macosx или qnx, с той разницей, что названные системы сильнее отличаются от прототипа...
приложение. Системные операции в приложении дается краткий обзор функций системы unix. Полное описание этих функций содержится в руководстве программиста-пользователя версии V системы unix iconРтйенщ ртпжеууйпобмшопк тбвпфщ ч unix
Опзппвтбъйе утед уйуфенщ unix чбы тезйуфтбгйпоощк лбфбмпз: лбл удембфш езп лпнжптфощн фептйй пфопуйфемшопуфй a la unix цйъош уйуфенщ...
приложение. Системные операции в приложении дается краткий обзор функций системы unix. Полное описание этих функций содержится в руководстве программиста-пользователя версии V системы unix iconI. введение в excel 23 Глава
Iii. Создание пользовательских функций 675 Глава 14. Макросы, программы и нестандартные функции 677 Глава 15. Разработка нестандартных...
приложение. Системные операции в приложении дается краткий обзор функций системы unix. Полное описание этих функций содержится в руководстве программиста-пользователя версии V системы unix iconОздоровительная физкультура при нарушении функций пищеварительной системы
Российский Государственный Педагогический Университет им. А. И. Герцена Кафедра физической культуры Реферат на тему «Оздоровительная...
приложение. Системные операции в приложении дается краткий обзор функций системы unix. Полное описание этих функций содержится в руководстве программиста-пользователя версии V системы unix iconАндрей Богатырев. Хрестоматия по программированию на Си в Unix
В этой книге вы найдете ряд задач, примеров, алгоритмов, советов и стилистичес- ких замечаний по использованию языка программирования...
приложение. Системные операции в приложении дается краткий обзор функций системы unix. Полное описание этих функций содержится в руководстве программиста-пользователя версии V системы unix iconРтйенщ ртпжеууйпобмшопк тбвпфщ ч unix
Ертетщчопе уойцеойе гео, тпуф ртпйъчпдйфемшопуфй ч обые чтенс й пцйдбенпе рпсчмеойе опчщи нйлтп- й ухрет-нйлтплпнршафетпч дембаф...
приложение. Системные операции в приложении дается краткий обзор функций системы unix. Полное описание этих функций содержится в руководстве программиста-пользователя версии V системы unix iconПрограммирование на shell (unix) (Учебное пособие)
Беспрецедентным является то, что ос unix может работать практически на на всех выпускаемых платформах. Unix это стандарт де факто...
Разместите кнопку на своём сайте:
txt.rushkolnik.ru



База данных защищена авторским правом ©txt.rushkolnik.ru 2012
обратиться к администрации
txt.rushkolnik.ru
Главная страница