Содержание
- 2. Общие концепции #include #include key_t ftok ( char * filename, char proj ) filename — строка,
- 3. Общие концепции get ( key, …, flags ) — создание/подключение Флаги cоздания/подключения: IPC_PRIVATE (доступность только породившему
- 4. IPC: очередь сообщений Общие концепции Создание/доступ к очереди сообщений Отправка сообщений Получение сообщений Управление очередью сообщений
- 5. A B B B A A A Очередь сообщений Организация очереди сообщений по принципу FIFO Использование
- 6. Создание/доступ к очереди сообщений key — ключ msgflag — флаги, управляющие поведением вызова В случае успеха
- 7. Отправка сообщений msqid — дескриптор очереди, полученный в результате вызова msgget() msgp — указатель на буфер:
- 8. Отправка сообщений msgsz — размер тела сообщения msgflg 0 процесс блокируется, если для посылки сообщения недостаточно
- 9. Получение сообщений msqid — дескриптор очереди msgp — указатель на буфер msgsz — размер тела сообщения
- 10. Получение сообщений msgflg — побитовое сложение флагов IPC_NOWAIT — если сообщения в очереди нет, то возврат
- 11. Управление очередью сообщений msgid — дескриптор очереди cmd — команда IPC_STAT — скопировать структуру, описывающую управляющие
- 12. Управление очередью сообщений buf — структура, описывающая параметры очереди. #include #include #include int msgctl (int msqid,
- 13. Использование очереди сообщений int main ( int argc, char ** argv ) { key_t key; int
- 14. ... switch ( str [ 0 ] ) { case ‘a’ : case ‘A’ : Message
- 15. int main ( int argc, char ** argv ) { key_t key ; int msgid ;
- 16. Пример: «Клиент-сервер» int main ( int argc, char ** argv ) { struct { long mestype
- 17. Пример: «Клиент-сервер» int main ( int argc, char ** argv ) { struct { long mestype;
- 18. #include #include #include int shmget ( key_t key, int size, int shmflg ) IPC: разделяемая память
- 19. #include #include #include char * shmat ( int shmid, char * shmaddr, int shmflg ) Доступ
- 20. #include #include #include int shmdt ( char * shmaddr ) Отключение от разделяемой памяти shmaddr —
- 21. #include #include #include int shmctl ( int shmid, int cmd, struct shmid_ds * buf ) Управление
- 22. int main ( int argc, char ** argv ) { key_t key; char * shmaddr ;
- 23. IPC: массив семафоров
- 24. #include #include #include int semget ( key_t key, int nsems, int semflag ) Создание/доступ к семафору
- 25. #include #include #include int semop ( int semid, struct sembuf *cmd_buf , size_t nops ) Операции
- 26. Операции над семафором struct sembuf { short sem_num ; /* номер семафора */ short sem_op ;
- 27. #include #include #include int semctl (int semid, int num, int cmd, union semun arg) Управление массивом
- 28. #include #include #include int semctl (int semid, int num, int cmd, union semun arg) Управление массивом
- 29. Пример. Использование разделяемой памяти и семафоров
- 30. Использование разделяемой памяти и семафоров int main ( int argc, char ** argv ) { key_t
- 31. … semctl ( semid, 0, SETVAL, (int) 0 ) ; sops . sem_num = 0 ;
- 32. int main ( int argc, char ** argv ) { key_t key ; int semid, shmid
- 34. Скачать презентацию