| 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 |
本文详细介绍了Posix和SystemV两种进程间通信(IPC)机制,包括消息队列、信号量和共享内存区的概念及使用方法。针对每种机制,提供了创建、控制和操作IPC的具体函数和相关头文件,帮助读者深入了解IPC的工作原理。
4812

被折叠的 条评论
为什么被折叠?



