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 недопустимый аргумент в вызове системной функции
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 процессом не обрабатываются
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; /* время последнего изменения статуса */
};
stimе
stime(tptr)
long *tptr;
Функция stime устанавливает системное время и дату в соответствие со значением, указанным в параметре tptr. Время указывается в секундах от 00:00:00 1 января 1970 года по Гринвичу.
synс
sync()
Функция sync выгружает содержащуюся в системных буферах информацию (относящуюся к файловой системе) на диск.
timе
time(tloc)
long *tloc;
Функция time возвращает системное время в секундах от 00:00:00 1 января 1970 года по Гринвичу.
times
#include ‹sys/types.h›
#include ‹sys/times.h›
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 у потомков */
};
ulimit
ulimit(cmd, limit)
int cmd;
long limit;
Функция ulimit дает процессу возможность устанавливать различные ограничения в зависимости от значения параметра cmd:
1 вернуть максимальный размер файла (в блоках по 512 байт), в который процесс может вести запись
2 установить ограничение сверху на размер файла равным значению параметра limit
3 вернуть значение верхней точки прерывания (максимальный доступный адрес в области данных)
uмask
umask(mask)
int mask;
Функция umask устанавливает значение маски, описывающей режим создания файла (mask), и возвращает старое значение. При создании файла биты разрешения доступа, которым соответствуют установленные разряды в mask, будут сброшены.
uмount
umount(specialfile)
char *specialfile
Функция umount выполняет демонтирование файловой системы, расположенной на устройстве ввода-вывода блоками specialfile.
unamе
#include ‹sys/utsname.h›
uname(name)
struct utsname *name;
Функция uname возвращает информацию, идентифицирующую систему в соответствии со следующей структурой: