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 |