Читаем Архитектура операционной системы UNIX полностью

Переменная sem_num содержит указатель в массиве семафоров, ассоциированный с данной операцией, а переменная sem_flg — флаги для данной операции. Переменная sem_op может принимать следующие значения:

отрицательное если сумма значения семафора и значения sem_op ›= 0, значение семафора изменяется на величину sem_op; в противном случае, функция приостанавливает свое выполнение, если это разрешено флагом

положительное увеличить значение семафора на величину sem_op

нулевое если значение семафора равно 0, продолжить выполнение; в противном случае, приостановить выполнение, если это разрешается флагом

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

setpgrр

setpgrp

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

setuid

setuid(uid)

int uid;

setgid(gid)

int gid;

Функция setuid устанавливает значения фактического и исполнительного кодов идентификации пользователя текущего процесса. Если вызывающий процесс исполняется под управлением суперпользователя, функция сбрасывает значения указанных кодов. В противном случае, если фактический код идентификации пользователя имеет значение, равное значению uid, функция setuid делает равным этому значению и исполнительный код идентификации пользователя. То же самое происходит, если значению uid равен код, сохраненный после выполнения setuid-программы, запускаемой с помощью функции exec. Функция setgid имеет тот же смысл по отношению к аналогичным групповым кодам.

shmctl

#include ‹sys/types.h›

#include ‹sys/ipc.h›

#include ‹sys/shm.h›

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; /* идентификатор процесса, связанного с последней операцией над областью */

  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 ‹sys/types.h›

#include ‹sys/ipc.h›

#include ‹sys/shm.h›

shmget(key, size, flag)

key_t key;

int size, flag;

Функция shmget обращается к области разделяемой памяти или создает ее. Параметр size задает размер области в байтах. Параметры key и flag имеют тот же смысл, что и в функции msgget.

shmор

#include ‹sys/types.h›

#include ‹sys/ipc.h›

#include ‹sys/shm.h›

shmat(id, addr, flag)

int id, flag;

char *addr;

shmdt(addr)

char *addr;

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

signal

#include ‹signal.h›

signal(sig, function)

int sig;

void (*func);

Функция signal дает текущему процессу возможность управлять обработкой сигналов. Параметр sig может принимать следующие значения:

SIGHUP "зависание"

SIGINT прерывание

SIGQUIT прекращение работы

SIGILL запрещенная команда

SIGTRAP внутреннее прерывание, связанное с трассировкой

SIGIOT инструкция IOT

SIGEMT инструкция EMT

SIGFPE особая ситуация при работе с числами с плавающей запятой

SIGKILL удаление из системы

SIGBUS ошибка в шине

SIGSEGV нарушение сегментации

SIGSYS недопустимый аргумент в вызове системной функции

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

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT