博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进程间通信基础
阅读量:6839 次
发布时间:2019-06-26

本文共 775 字,大约阅读时间需要 2 分钟。

进程间通信大致可以分为本地进程间通信网络进程间通信

本地进程间通信有:管道和FIFO(命令管道)、消息队列、信号量(semaphore)以及共享存储
网络进程间通信:套接字(socket)和STREAMS

1.管道和FIFO(命名管道)

最适合在进程之间实现生产者/消费者的交互。有些进程向管道中写入数据,而另外一些进程则从管道中读出数据。

1).在Unix的命令shell中,可以使用“|”操作符来创建管道。

例如,下面的语句通知shell创建两个进程,并使用一个管道把这两个进程连接在一起:
$ls | more
第一个进程(执行ls程序)的标准输出被重定向到管道中;第二个进程(执行more程序)从这个管道中读取输入。
注意,执行下面这两条命令也可以得到相同的结果;
$ls > temp
$more < temp
第一个命令把ls的输出重定向到一个普通文件中;接下来,第二个命令强制more从这个普通文件中读取输入。当然,通常使用管道比使用临时文件更方便。\

2).进程通过执行mknod系统调用创建一个FIFO.FIFO一旦被创建,就可以使用普通的open()、read()、write()、close()系统调用FIFO。

2.消息队列
允许进程在预定义的消息队列中读和谐消息来交换消息。Linux内核提供两种不同的消息版本:System V IPC消息和POSIX消息。
3.信号量
4.共享存储
允许进程通过共享内存块来交换信息。在必须共享大量数据的应用中,这可能是最高效的进程通信方式。
5.套接字
允许不同计算机上的进程通过网络交换数据。套接字还可以用作相同主机上的进程之间的通信工具。

参考文档:

UNIX坏境高级编程

转载于:https://www.cnblogs.com/chengliu/p/3636349.html

你可能感兴趣的文章
A*算法 javascript模拟
查看>>
ruby 正则表达式Regexp
查看>>
Java 如何使用radio button保存值
查看>>
我和奇葩的故事之失联第七天
查看>>
NAT网络地址转换
查看>>
DateTime格式化问题
查看>>
mysql连接错误
查看>>
vagrant学习记录
查看>>
【人生】新年伊始
查看>>
杭电2097--Sky数
查看>>
杭电1754--I Hate It(线段树)
查看>>
AS莫名报错 Error:Could not download junit.jar (junit:junit:4.12): No cached version available
查看>>
Kendo UI 简单使用
查看>>
FCKeditor的使用说明
查看>>
[转载]树莓派新版系统上使用mjpg-streamer获取USB摄像头和树莓派专用摄像头RaspiCamera图像...
查看>>
处理js两个数相乘的坑
查看>>
1.spring:helloword/注入/CDATA使用/其他Bean/null&级联/p命名空间
查看>>
docker-3-常用命令(上)
查看>>
Python(Dict和Set类型)
查看>>
django-pure-pagination 组件使用
查看>>