Чтение онлайн

на главную - закладки

Жанры

Linux: Полное руководство

Аллен Питер В.

Шрифт:

w - запись в сегмент

r - чтение

d - удаление сегмента

m — изменение прав доступа */

 switch(tolower(argv[1][1])) {

 case 'w':

shm_write(shmid, ptr, argv[2]);

break;

 case 'r':

shm_read(shmid, ptr);

break;

 case 'd':

shm_rm(shmid);

break;

 case 'm':

shm_change_mode(shmid, argv[2]);

break;

 }

}

/* Функция для записи в сегмент: ей нужно передать

ID сегмента, адрес привязки и записываемую информацию */

shm_write(int shmid, char *ptr, char *info) {

 strcpy(ptr, info);

}

/* Функция чтения информации из сегмента */

shm_read(int shmid, char *ptr) {

 printf("Информация из сегмента: %s\n", ptr);

}

/* Функция удаления сегмента */

shm_rm(int shmid) {

 shmctl(shmid, IPC_RMID, 0);

 printf("Сегмент помечен на удаление\n");

}

/* Функция изменения прав доступа. Ей нужно передать

 идентификатор сегмента и права доступа в виде строки,

 например, "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 (Request for Comments) — это документы, в которых описывается устройство сети Интернет. Они создаются сообществом Интернет (Internet Society, ISOC). Любой член ISOC может опубликовать свой стандарт в документе RFC. Документы RFC делятся на пять типов:

1. Требуется (Required) — данный стандарт должен быть реализован на всех основных узлах TCP/IP.

2. Рекомендуется (Recommended) — обычно такие спецификации RFC также реализуются.

Поделиться:
Популярные книги

Газлайтер. Том 6

Володин Григорий
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 6

Камень Книга двенадцатая

Минин Станислав
12. Камень
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Камень Книга двенадцатая

Аристократ из прошлого тысячелетия

Еслер Андрей
3. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Аристократ из прошлого тысячелетия

#НенавистьЛюбовь

Джейн Анна
Любовные романы:
современные любовные романы
6.33
рейтинг книги
#НенавистьЛюбовь

Локки 8. Потомок бога

Решетов Евгений Валерьевич
8. Локки
Фантастика:
фэнтези
боевая фантастика
героическая фантастика
попаданцы
5.00
рейтинг книги
Локки 8. Потомок бога

Тринадцатый V

NikL
5. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый V

Законы Рода. Том 6

Андрей Мельник
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 6

По прозвищу Святой. Книга вторая

Евтушенко Алексей Анатольевич
2. Святой
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
По прозвищу Святой. Книга вторая

Неудержимый. Книга XXVI

Боярский Андрей
26. Неудержимый
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Неудержимый. Книга XXVI

Я – Легенда

Гарцевич Евгений Александрович
1. Я - Легенда!
Фантастика:
боевая фантастика
попаданцы
рпг
фантастика: прочее
5.00
рейтинг книги
Я – Легенда

Последний Герой. Том 3

Дамиров Рафаэль
3. Последний герой
Фантастика:
попаданцы
альтернативная история
фантастика: прочее
5.00
рейтинг книги
Последний Герой. Том 3

Император Пограничья 8

Астахов Евгений Евгеньевич
8. Император Пограничья
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Император Пограничья 8

Законы рода

Андрей Мельник
1. Граф Берестьев
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Законы рода

Идеальный мир для Лекаря 14

Сапфир Олег
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 14