学习内容:
管道-命名管道(2/2)、消息队列、共享内存
收获:
管道-命名管道(2/2)
-
了解了打开FIFO时,指定O_NONBLOCK时的影响;
FIFO_01
FIFO_02
消息队列
- 了解了消息队列的概念;
- 了解了IPC通信机制中key值的作用以及获取方法:ftok();
- 了解了消息队列的创建:
int msgget(key_t, int msgflg)
; - 了解了使用shell命令操作消息队列:
ipcs -q
、ipcrm -q msqid
; - 了解了消息队列的格式:
typedef struct _msg
{
long mtype; /*消息类型,必须是长整型*/
char mtetxt[100]; /*消息正文*/
... /*消息正文可以有多个成员*/
}MSG;
- 了解了消息队列发送消息和接受消息:msgsnd()、msgrcv();
- 了解了消息队列的控制:msgctl();
消息队列_01
消息队列_02
key值
msgsnd_01
msgsnd_02
msgrcv_01
msgrcv_02
msgrcv_03
msgctl_01
msgctl_02
共享内存
- 了解了共享内存的概念;
- 了解了创建或打开一块共享内存:shmget();
- 了解了使用shell命令操作共享内存:
ipcs -m
、ipcrm -m shmid
; - 了解了共享内存的映射(attach):shmat();
- 了解了解除共享内存的映射(detach):shmdt();
- 了解了共享内存的控制:shmctl();
共享内存_01
共享内存_02
共享内存_03
shmget
shmat_01
shmat_02
shmat_03
shmdt
shmctl_01
shmctl_02
shmctl_03