我正在寻找有关可能的IPC机制的建议:
我的选择是什么?我正在Linux下编程,但我希望将来我写的可以移植到其他操作系统.我曾考虑使用套接字,命名管道或DBus之类的东西.
我有一个创建两个或更多子流程的主流程,我希望主流程等到所有子流程完成其操作并退出?
# main_script.py
p1 = subprocess.Popen(['python script1.py'])
p2 = subprocess.Popen(['python script2.py'])
...
#wait main process until both p1, p2 finish
...
Run Code Online (Sandbox Code Playgroud) 我们仍处于项目的设计阶段,但我们正在考虑在嵌入式Linux内核上有三个独立的进程.其中一个过程是通信模块,它通过各种介质处理与设备之间的所有通信.
其他两个进程需要能够通过通信过程发送/接收消息.我正在尝试评估Linux提供的IPC技术; 其他进程将发送的消息大小各不相同,从调试日志到流媒体,速率约为5 Mbit.此外,媒体可以同时流入和流出.
您对此应用建议使用哪种IPC技术? http://en.wikipedia.org/wiki/Inter-process_communication
处理器运行大约400-500 Mhz,如果这改变了什么.不需要跨平台,只有Linux才行.需要使用C或C++实现.
我最近在Linux中一直在使用消息队列(系统V,但POSIX也应该没问题),它们看起来非常适合我的应用程序,但在阅读了Unix编程的艺术之后,我不确定它们是否真的是一个不错的选择.
http://www.faqs.org/docs/artu/ch07s02.html#id2922148
System V IPC的上层消息传递层已基本停止使用.较低层由共享内存和信号量组成,在需要进行互斥锁定和在同一台机器上运行的进程之间进行一些全局数据共享的情况下,仍然具有重要的应用程序.这些System V共享内存工具演变为POSIX共享内存API,支持Linux,BSD,MacOS X和Windows,但不支持经典MacOS.
http://www.faqs.org/docs/artu/ch07s03.html#id2923376
System V IPC工具存在于Linux和其他现代Unix中.但是,由于它们是遗留功能,因此不会经常使用它们.到2003年中期,Linux版本仍然存在漏洞.似乎没有人足够关心它们.
在最近的Linux版本中,System V消息队列是否仍然存在错误?我不确定作者是否意味着POSIX消息队列应该没问题?
似乎套接字几乎是任何东西(?)的首选IPC,但我看不出用套接字或其他东西实现消息队列是多么简单.或者我的想法太复杂了?
我不知道我是否正在使用嵌入式Linux?
我有以下情况:
我java在本地计算机上运行了2个JVM进程(实际上有2个进程单独运行,而不是2个线程).我们称他们ProcessA为ProcessB.
我希望他们彼此沟通(交换数据)(例如ProcessA发送消息来ProcessB做某事).
现在,我通过编写临时文件解决此问题,这些进程会定期扫描此文件以获取消息.我认为这个解决方案并不是那么好.
什么是实现我想要的更好的选择?
请问任何人请告诉我android中存在的所有IPC机制是什么.
据我所知:
1)意图,
2)粘合剂.
TCP具有元组对(IP地址/端口/类型)以告知一个客户端与另一个客户端.UDP传递客户端IP和端口.unix域如何跟踪不同的客户端?
换句话说,服务器创建一个绑定到某个路径的套接字,例如/ tmp/socket.2个或更多客户端连接到/ tmp/socket.下面是什么来跟踪来自client1和client2的数据?我想网络堆栈在域套接字中不起作用,所以内核在这里完成所有工作吗?
是否存在unix域协议格式,如IP协议格式和TCP/UDP格式?域套接字数据报协议的格式是否在某处发布?每个unix是不同的还是像POSIX那样标准化它?
感谢任何照明.我找不到任何解释这个的信息.每个消息来源都掩盖了如何使用域套接字.
我想要用C#编写的父进程和子进程之间的通信.它应该是异步的,事件驱动的.我不希望在处理非常罕见的通信的每个进程中运行一个线程.
什么是最好的解决方案?
我以前从未在Windows上做过IPC.目前我正在开发一对程序,一个标准的GUI/CLI应用程序和一个Windows服务.该应用程序必须告诉服务该做什么.因此,假设通信只是本地通信,那么这两个进程的最佳通信方法是什么?
最好的地方被定义为更健壮,更不容易出错,不是最高性能也不是最容易编码.
代码示例将非常受欢迎,但不是必需的:-)
注意我只是询问使用什么,标准TCP套接字,命名管道或其他一些通信方式.
谢谢!
在两个不同的python进程之间进行进程间通信的干净而优雅的方法是什么?我目前在操作系统中使用命名管道,但感觉有点hacky.我用dbus服务重写了我的东西,但是看起来当通过SSH会话远程运行代码时,它现在尝试初始化X11,这对于我想要做的事情来说似乎完全没有必要(它们与GUI无关).所以也许dbus有点太重量了.我正准备再次使用套接字重新设计,但它看起来很低级,所以我认为可能有一个更高级别的模块我可以导入和使用,我根本就不知道它的名字,我想我应该问SO第一..
我的要求是能够运行python foo.py并让这个过程就像守护进程那样做,并能够发送消息给它python foo.py --bar.后一个调用应该只是向现有进程发送一个消息并终止,可能带有0成功的返回代码或其他失败的代码(因此需要进行一些双向通信).