当前位置: 代码迷 >> 综合 >> 进程间通信(十六)——POSIX IPC简介
  详细解决方案

进程间通信(十六)——POSIX IPC简介

热度:8   发布时间:2024-01-11 03:58:11.0

POSIX IPC简介

POSIX IPC对象编程接口

接口 消息队列 信号量 共享内存
头文件
对象句柄
<mqueue.h>
mqd_t
<semaphore.h>
sem_t *
<sys/mman.h>
int(文件描述符)
创建/打开
关闭
断开链接
执行IPC


其他操作
mq_open
mq_close
mq_unlink
mq_send
mq_receive

mq_setattr()——设置特性
mq_getattr()——获取特性
mq_notify() ——请求通知
sem_open()
sem_close()
sem_unlink()
sem_post()、sem_wait()
sem_getvalue()

sem_init()——初始化未命名信号量
sem_destroy()——销毁未命名信号量
shm_open() + mmap()
munmap()
shm_unlink()

在共享区域中的位置上操作

POSIX与system V IPC

POSIX IPC

  • POSIX接口更简单:使用类似于文件I/O的open、close、unlink等接口
  • POSIX使用名字代替键来标识IPC对象
  • 对IPC对象引用计数,简化了对IPC对象的删除
    • 跟文件类似,删除操作也仅仅是删除了IPC对象的名字
    • 只有当IPC对象的引用计数变成0之后才能真正销毁

System V IPC

  • System V IPC 可移植性好:几乎所有的UNIX系统都支持System V,POSIX在UNIX系统中只是一个可选组件,有些UNIX系统并不支持
  • Linux系统一般会支持system V
  • Linux2.6开始陆续支持POSIX......

POSIX编程注意事项

  • 使用POSIX消息队列和共享内存时,需要实时库librt链接,编译时需指定-lrt
  • 使用POSIX信号量时,需要和线程库libthread链接起来,编译时需指定-lpthread