当前位置: 首页 > 面试题库 >

进程间通信建议

单品
2023-03-14
问题内容

我正在寻找一种轻巧,快速,简便的方法来处理Linux机器上某些程序之间的进程间通信。

目前,我正在考虑命名管道,因为它是由操作系统本身提供的。关于性能或可用性是否有任何警告?

共享内存会更好吗?

我认为我不需要超级复杂的框架

请指出正确的方向,谢谢!

更新:我想构建一个小程序(守护程序),告诉其他程序(它本身开始)暂停,向后报告其状态,停止等。

因此,应通知另一个程序有新命令正在等待它。管道不是很理想,不是吗?


问题答案:

Boost有一个很好的InterProcess库,它是跨平台的并且非常直观。

我只是在玩弄它,所以那里可能会有更好的选择。

但是,如果您真的不需要共享内存,我会坚持使用消息传递方法。您将避免僵局和竞争状况。管道原理确实很棒,它甚至允许出现惰性行为,这可能会节省大量的处理时间,具体取决于手头的事情!



 类似资料:
  • 进程间通信 IPC全称Interprocess Communication,指进程间协作的各种方法,当然包括共享内存,信号量或Socket等。 管道(Pipe) 管道是进程间通信最简单的方式,任何进程的标准输出都可以作为其他进程的输入。 信号(Signal) 下面马上会介绍。 消息队列(Message) 和传统消息队列类似,但是在内核实现的。 共享内存(Shared Memory) 后面也会有更详

  • 问题内容: Java上下文中的线程和进程之间有什么区别?用Java如何实现进程间通信和线程间通信?请给我指出一些现实生活中的例子。 问题答案: 根本的区别是线程位于相同的地址空间中,而进程位于不同的地址空间中。这意味着线程间通信是关于传递对对象的引用以及更改共享对象,而进程是关于传递对象的序列化副本。 在实践中,Java线程间通信可以实现为对共享对象进行简单的Java方法调用,并引入适当的同步。或

  • 问题内容: 我正在用Go编写负载平衡的服务器系统。 负载平衡服务器将与多个应用程序服务器通信并处理请求。这些服务器都可以在同一台计算机或网络上运行。 我已经找到了网络,但是现在我需要找到一种最佳的方式来使负载均衡器与本地应用程序服务器进行通信。使用-networking似乎并非最佳选择。 我正在尝试通过和系统调用共享内存,但是没有找到任何有效的示例,并且该软件包也完全没有文档说明。 有人可以为我提

  • 问题内容: 我遇到需要将命令发送到正在运行的Java应用程序的情况,现在我正在使用tcp / ip套接字使用Internet Explorer上下文菜单项将命令发送到应用程序。但是,一旦应用程序启动,病毒扫描程序就会抱怨该应用程序开始监听,尽管我只是在监听本地连接。我认为这可能会使用户感到困惑。我正在寻找其他方式而又不会惹恼影音扫描器吗? 问题答案: 为此,最好不要使用基于文件的FIFO队列。或使

  • 进程之间用来相互通讯和同步

  • 4. 进程间通信 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)。如下图所示。 图 30.6. 进程间通信 4.1. 管道 管道是一种最基本