Posix IPC概述 | 消息队列 | 信号量 | 共享内存区 |
头文件 | <mqueue.h> | <semaphore.h> | <sys/mman.h> |
创建、打开或删除IPC的函数 |
mq_open mq_close mq_unlink |
sem_open sem_close sem_unlink sem_init sem_destroy |
shm_open shm_unlink |
控制IPC操作的函数 |
mq_getattr mq_setattr |
ftruncate fstat | |
IPC操作函数 |
mq_send mq_receive mq_notify |
sem_wait sem_trywait sem_post sem_getvalue |
mmap munmap |
Posix IPC概述(oflag常值) |
mq_open |
sem_open |
shm_open | |
只读 |
O_RDONLY |
O_RDONLY | ||
若不存在则创建 |
O_CREAT |
O_CREAT |
O_CREAT | |
非阻塞模式 |
O_NONBLOCK |
| ||
Posix 创建或打开IPC通道的命令参数 | ||
oflag参数 |
key不存在 |
key已存在 |
无特殊标志 |
出错,erron=ENOENT |
成功,引用已存在对象 |
O_CREAT |
成功,创建新对象 |
成功,引用已存在对象 |
O_CREAT | O_EXCL |
成功,创建新对象 |
出错,errno=EEXIST |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~我是无辜的分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
System V IPC概述 |
消息队列 |
信号量 |
共享内存区 | |
头文件 |
<sys/msg.h> |
<sys/sem.h> |
<sys/shm.h> | |
创建、打开或删除IPC的函数 |
msgget |
semget |
shmget | |
控制IPC操作的函数 |
msgctl |
semctl |
shmctl | |
IPC操作函数 |
msgsnd |
semop |
shmat | |
System V 创建或打开IPC通道的命令参数 | ||
oflag参数 |
key不存在 |
key已存在 |
无特殊标志 |
出错,erron=ENOENT |
成功,引用已存在对象 |
IPC_CREAT |
成功,创建新对象 |
成功,引用已存在对象 |
IPC_CREAT | IPC_EXCL |
成功,创建新对象 |
出错,errno=EEXIST |