ВУЗ:
Составители:
264
ptr = (char*) shmat(id, NULL, 0);
return 0;
}
Вызов shmget создает сегмент разделяемой памяти указанного раз-
мера. Полное имя, передаваемое в качестве аргумента командной стро-
ки, преобразуется в ключ IPC System V вызовом функции ftok. Если ука-
зан параметр е командной строки и в системе существует сегмент с тем
же именем, запуски программы завершатся по ошибке. Если известно,
что сегмент уже существует, то в командной строке должна быть указа-
на нулевая длина сегмента памяти.
Вызов shmat подключает сегмент к адресному пространству про-
цесса, после чего программа завершает работу. В связи с тем, что разде-
ляемая память System V обладает «живучестью ядра», то сегмент разде-
ляемой памяти при этом не удаляется.
Программа shmrmid вызывает функцию shmctl с командой
IPC_RMID для удаления сегмента разделяемой памяти из системы.
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <error.h>
#include <fcntl.h>
#define SVSHM_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
int main(int argc, char **argv)
{
int id;
if (argc != 2)
{
printf("usage: shmrmid <path_to_file>");
return 0;
}
id = shmget(ftok(argv[1], 0), 0, SVSHM_MODE);
shmctl(id, IPC_RMID, NULL);
return 0;
}
Страницы
- « первая
- ‹ предыдущая
- …
- 262
- 263
- 264
- 265
- 266
- …
- следующая ›
- последняя »
