进程间通信-IPC

IPC进程间通信_顺其自然~的博客-CSDN博客_ipc通信

1. 进程间通信(IPC)——管道

(36条消息) 进程间通信(IPC)——管道_牵猫散步的鱼儿的博客-CSDN博客_ipc管道

(37条消息) 进程间通信(IPC):管道_♚陌上花开的博客-CSDN博客_ipc 管道通讯

 

 

2.IPC之FIFO(有名管道)详解

(36条消息) IPC之FIFO(有名管道)详解_带鱼兄的博客-CSDN博客

(36条消息) 进程间通信(IPC)——FIFO(命名管道)_牵猫散步的鱼儿的博客-CSDN博客_进程fifo

 

3.进程间通信( IPC):消息队列

(36条消息) 进程间通信( IPC):消息队列_♚陌上花开的博客-CSDN博客_ipc 消息队列

 

4.信号量--System V信号量 与 Posix信号量

信号量--System V信号量 与 Posix信号量_51CTO博客_posix信号量

(37条消息) 进程间通信(IPC):信号量_♚陌上花开的博客-CSDN博客_ipcs 信号量

 

 

5.共享内存

(36条消息) 共享内存_shmget_付康为的博客-CSDN博客_shmget

 (37条消息) 进程间通信(IPC):共享内存_♚陌上花开的博客-CSDN博客_ipc共享内存

shmctl

int shmctl(int shmid,int cmd,struct shmid_ds *buf)
shmid:共享存储段的id
cmd:一些命令

    IPC_STAT 得到共享内存的状态
    IPC_SET 改变共享内存的状态
    IPC_RMID 删除共享内存

IPC_RMID 命令实际上不从内核删除一个段,而是仅仅把这个段标记为删除,实际的删除发生在最后一个进程离开这个共享段时。

请注意,共享内存不会随着程序结束而自动消除,要么调用shmctl删除,要么自己用手敲命令去删除,否则永远留在系统中。

使用命令:

ipcs -m //先通过查询所有的共享内存的id
ipcrm shm shmid  //删除指定共享内存区

 

 

五种通讯方式总结

1.管道:速度慢,容量有限,只有父子进程能通讯

2.FIFO:任何进程间都能通讯,但速度慢

3.消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题

4.信号量:不能传递复杂消息,只能用来同步

5.共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存。

posted @ 2022-11-23 17:33  放弃吧  阅读(44)  评论(0编辑  收藏  举报