Bash   发布时间:2022-05-13  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了比较Unix/Linux IPC大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
许多IPC由Unix / Linux提供:管道,套接字,共享内存,dbus,消息队列…

每个最合适的应用程序是什么,它们如何执行?

@H_801_3@
@H_801_3@
Unix IPC

这里是大七:

> Pipe

仅在与父/子相关的进程中有用。呼叫pipe(2)fork(2).单向。
> FIFO,或命名管道

两个不相关的进程可以使用FIFO不同于普通管道。呼叫@H_369_12@mkfifo(3).单向。
> Socket和Unix Domain Socket

双向。适合网络通信,但也可以在本地使用。可用于不同协议。 TCP没有消息边界。致电socket(2)
> message Queue

OS维护离散消息。见sys/msg.h。
> Signal

信号发送一个整数到另一个进程。不能很好地与多线程网格。致电kill(2)
> Semaphore

用于多进程或线程的同步机制,类似于人等待浴室的队列。见sys/sem.h。
> 70014

做你自己的并发控制。致电shmget(2)

消息边界问题

在选择一种方法时,一个决定因素是消息边界问题。你可能期望“消息”彼此是离散的,但它不是像TCP或Pipe的字节流。

虑一对echo客户端和服务器。客户端发送字符串,服务器接收它并立即发送它。假设客户端发送“Hello”,“Hello”和“如何回答?”。

使用字节流协议,服务器可以接收作为“地狱”,“oHelloHow”和“关于答案?或更现实地“HelloHelloHow关于答案?”。服务器没有消息边界的线索。

一个老年人的技巧是将消息长度限制为CHAR_MAX或UINT_MAX,并同意在char或uint中首先发送消息长度。所以,如果你在接收方,你必须先阅读消息长度。这也意味着只有一个线程应该一次执行消息读取。

使用像UDP或消息队列的离散协议,你不必担心这个问题,但是编程方式的字节流更容易处理,因为它们像文件和stdin / out。

@H_801_3@

大佬总结

以上是大佬教程为你收集整理的比较Unix/Linux IPC全部内容,希望文章能够帮你解决比较Unix/Linux IPC所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。