我是靠谱客的博主 单薄电脑,最近开发中收集的这篇文章主要介绍进程间‘共享内存需要加锁吗_linux进程通信方式对比管道:FIFO:消息队列:信号量:共享内存:套接字,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

管道:

速度慢,容量有限(64kB,ulimit -a可以查询的pipe size 指的是一次性写入的大小限制),只有父子进程能通讯 半双工的(即数据只能在一个方向上流动)----(匿名管道)

b227046a0bce9af526b74d4734777d0d.png

int pipe(int fd[2]); // 返回值:若成功返回0,失败返回-1

当一个管道建立时,它会创建两个文件描述符:fd[0]为读而打开,fd[1]为写而打开

要关闭管道只需将这两个文件描述符关闭即可。

单个进程中的管道几乎没有任何用处。所以,通常调用 pipe 的进程接着调用 fork,这样就创建了父进程与子进程之间的 IPC 通道

若要数据流从父进程流向子进程,则关闭父进程的读端(fd[0])与子进程的写端(fd[1]);反之,则可以使数据流从子进程流向父进程

FIFO:

任何进程间都能通讯,但速度慢 (命名管道),慢主要是由于内核在读写都加了互斥锁

int mkfifo(const char *pathname, mode_t mode);

FIFO的通信方式类似于在进程中使用文件来传输数据,只不过FIFO类型文件同时具有管道的特性。在数据读出时,FIFO管道中同时清除数据,并且“先进先出”<

最后

以上就是单薄电脑为你收集整理的进程间‘共享内存需要加锁吗_linux进程通信方式对比管道:FIFO:消息队列:信号量:共享内存:套接字的全部内容,希望文章能够帮你解决进程间‘共享内存需要加锁吗_linux进程通信方式对比管道:FIFO:消息队列:信号量:共享内存:套接字所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部