идентификатор сегмента и права доступа в виде строки,
например, "0666" * /
shm_change_mode(int shmid, char *mode) {
struct shmid_ds mds;
shmctl(shmid, IPC_STAT, &mds);
printf("Старые права доступа: %o\n", mds.shm_perm.mode);
sscanf(mode, "%o", &mds.shm_perm.mode);
shmctl(shmid, IPC_SET, &mds);
printf("Новые права доступа: %o\n", mds.shm_perm.mode);
}
Использовать программу нужно так:
./shm_demo -w строка
запись строки в сегмент
./shm_demo -r
чтение строки из сегмента
./shmdemo -m права
изменение прав доступа
./shm_demo -d
удаление сегмента
Выполните команду
$ ./shm_demo -w string
А затем запустите утилиту ipcs. Вы увидите, что наша программа создала разделяемый сегмент памяти:
------ Shared Memory Segments ------
key shmid owner perms bytes nattch status
0x44063781 0 root 660 256 0
------ Semaphore Arrays ------
key semid owner perns nsems status
------ Message Queues ------
key msqid owner perms used-bytes messages
Затем выполните команду:
$ ./shm_demo -r
Вы получите информацию:
Информация из сегмента: string
Попробуем изменить права доступа, а затем просмотреть информацию командой ipcs:
$./shm_demo -m 0666
------ Shared Memory Segments ------
key shmid owner perms bytes nattch status
0x44063781 0 root 660 256 0
------ Semaphore Arrays ------
key semid owner perms nsems status
------ Message Queues ------
key msqid owner perms used-bytes messages
Глава 27
Создание сетевого приложения в Linux
В главе 6 я ввел основные сетевые понятия, перечислил самые популярные протоколы и вкратце рассказал об основе сети Интернет — протоколе TCP/IP. В этой главе я собираюсь подробнее остановиться на протоколах TCP/IP и ICMP и показать, какие средства вы можете использовать для написания собственных приложений для работы в сети.
27.1. Протокол TCP/IP
27.1.1. Многоуровневая архитектура стека TCP/IP
Протокол TCP/IP был создан в конце 60-х — начале 70-х годов агентством DARPA Министерства Обороны США (U.S. Department of Defense Advanced Research Projects Agency). Основные этапы развития этого протокола отмечены в таблице 27.1.
Этапы развития протокола TCP/IP Таблица 27.1
Год | Событие |
---|---|
1970 г. | Введен в использования протокол NCP (Network Control Protocol) для узлов сети Arpanet |
1972 г. | Вышла первая спецификация Telnet (см. RFC 318) |
1973 г. | Введен протокол FTP (RFC 454) |
1974 г. | Разработана программа TCP (Transmission Control Program) |
1981 г. | Опубликован стандарт протокола IP (RFC 791) |
1982 г. | Объединение протоколов TCP и IP в одно целое — TCP/IP |
1983 г. | Сеть Arpanet переведена на протокол TCP (ранее использовался протокол NCP) |
1904 г. | Введена доменная система имен DNS |
Как видите, все стандарты интернет-протоколов опубликованы в документах RFC. Документы RFC (
1. Требуется (Required) — данный стандарт должен быть реализован на всех основных узлах TCP/IP.
2. Рекомендуется (Recommended) — обычно такие спецификации RFC также реализуются.
3. Выборочно (Elective) — реализация не обязательна.
4. Ограниченное использование (Limited use) — не рекомендуется для всеобщего применения.
5. Не рекомендуется (Not recommended) — не рекомендуются.
Протоколы семейства TCP/IP можно представить в виде модели, состоящей из четырех уровней: прикладного, основного, межсетевого и сетевого (таблица 27.2).
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии