Архитектура операционной системы UNIX
Шрифт:
struct msgbuf {
long mtype;
char mtext[];
};
Если в параметре flag бит IPC_NOWAIT сброшен, функция msgsnd будет приостанавливаться в тех случаях, когда размер отдельного сообщения или число сообщений в системе превышают допустимый максимум. Если бит IPC_NOWAIT установлен, функция msgsnd в этих случаях прерывает свое выполнение. Функция msgrcv принимает сообщение из очереди с идентификатором id. Если параметр type имеет нулевое значение, из очереди будет выбрано сообщение, первое по счету; если положительное значение, из очереди выбирается первое сообщение данного типа; если отрицательное
niсе
nice(increment)
int increment;
Функция nice увеличивает значение соответствующей компоненты, участвующей в вычислении приоритета планирования текущего процесса, на величину increment. Увеличение значения nice ведет к снижению приоритета планирования.
оpen
#include ‹fcntl.h›
open(filename, flag, mode)
char *filename;
int flag, mode;
Функция open выполняет открытие указанного файла в соответствии со значением параметра 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 ‹sys/lock.h›
plock(op)
int op;
Функция plock устанавливает и снимает блокировку областей процесса в памяти в зависимости от значения параметра op:
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 в случае отсутствия доступных для чтения данных возвратит управление немедленно.
semctl
#include ‹sys/types.h›
#include ‹sys/ipc.h›
#include ‹sys/sem.h›
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