Poxis IPC
消息队列 | 信号量 | 共享内存区 | |
头文件 | |||
创建、打开或删除IPC的函数 | mq_open mq_close mq_unlink | sem_open sem_close sem_unlink | shm_open shm_unlink |
sem_init sem_destroy | |||
控制IPC操作的函数 | mq_getattr mq_setattr | ftruncate fstat | |
IPC操作函数 | mq_send mq_receive mq_notify | sem_wait sem_trywait sem_post sem_getvalue | mmap munmap |
sem_open是用来创建命名信号量的,在RHEL5.4测试,命名信号量存在于/dev/shm目录下,注意其持续性是随内核。创建了一个命名信号量,其初始值竟然是sem_getvalue:134514137,为什么?为什么打开一个信号量用O_RDONLY,还可以sem_post呢?
System V IPC
消息队列 | 信号量 | 共享内存区 | |
头文件 | |||
创建或打开IPC的函数 | msgget | semget | shmget |
控制IPC操作的函数 | msgctl | semctl | shmctl |
IPC操作函数 | msgsnd msgrcv | semop | shmat shmdt |