草庐IT

IPC-Mechanism

全部标签

windows - Windows 上 IPC 的命名管道与 UDP

为什么命名管道更适合本地Windows机器上的IPC(进程间通信)而不是UDP?或者UDP有时可能在某个地方更好? 最佳答案 即使在本地主机上的UDP数据包也可能丢失。此外,由于UDP是基于数据报的并且无法保证交付,因此很难传输较大的数据block。最后,本地主机上的UDP有时会被浏览器阻止。一般来说,单机IPC通常不考虑UDP。在Windows上,我推荐内存映射文件+同步原语作为最快且可能是最简单的方法。当您管理命名管道工作时,命名管道通常运行良好,但我在这里看到很多关于如何使命名管道工作的问题(而且我还没有看到任何关于MMF的投

windows - 如何在 Windows 上执行非阻塞 IPC 读取?

我有一个Perl脚本,它使用外部工具(cleartool)来收集有关文件列表的信息。我想使用IPC来避免为每个文件生成一个新进程:useIPC::Open2;my($cin,$cout);my$child=open2($cout,$cin,'cleartool');返回单行的命令运行良好。例如print$cin"describe-short$file\n";my$description=;返回多行的命令让我陷入了如何使用整个响应而不被阻塞读取挂断的死胡同:print$cin"lshistory$file\n";#readandprocess$cout...我已经尝试通过fcntl为非阻

c++ - 请求有关执行 IPC/事件捕获的建议

我有一个简单的python服务器脚本,它fork出C++程序的多个实例(比如N)。C++程序生成一些需要捕获的事件。事件当前正在日志文件中捕获(每个fork进程1个日志文件)。此外,我需要定期(T分钟)获取事件在所有子进程中生成到python服务器或监听这些事件的其他程序的速率(仍然不确定)。根据这些事件的发生率,服务器可能会采取一些“react”(比如减少fork实例的数量)一些我简要看过的指示:greplogfiles-遍历正在运行的进程日志文件(.running),过滤那些在最后T分钟内生成的条目,分析数据并报告socketipc-将代码添加到c++程序以将事件发送到某个服务器程

php - ap_pass_brigade 在 handle_request_ipc 函数中失败

页面导致500错误,日志显示如下:[WedMar2011:19:232013][warn][client127.0.0.1](104)Connectionresetbypeer:mod_fcgid:ap_pass_brigadefailedinhandle_request_ipcfunction它发生在lemonstand网站上,当您尝试在类别页面上查看90种产品时。从每页60到90的步骤似乎太多了,它会导致500错误。错误发生前页面加载时间不超过4秒左右,服务器上运行的许多其他网站都没有遇到此问题。到目前为止,我一直认为这是由于环境设置造成的,而不是由Lemonstand造成的。我已

ios - iOS 是否有任何等同于 DLL/IPC/进程生成的东西?

不同的应用程序是否能够以DLL之类的形式共享相同的二进制文件?我知道编译静态库是可能的,但我不会将它们视为与DLL相同(即dll是多个应用程序共享的二进制文件的一个副本,而静态库则由任何使用的应用程序单独包含)。每个应用是否完全相互独立,是否有任何IPC或文件共享机制可供不同的应用进行通信和共享数据?应用是否可以在新线程之外创建新进程(我猜不是)? 最佳答案 您不能在应用程序之间共享可执行文件。Apple要求所有应用程序都独立运行。但是,您可以使用UIDocumentInteractionController获取另一个程序来处理您不

node.js - 进程之间的通信 : tcp vs unix sockets, ipc vs nats

我将一个大型应用程序分成几个进程,我希望每个进程能够相互通信。现在它将在同一台服务器上,但稍后同一本地网络上的多台服务器将有多个进程需要相互通信。(表示在一台服务器上提供服务,在同一vpc上的其他服务器上提供服务)所以..我的原始选项是tcp或unixsockets。我知道只有在同一台服务器上时,Unix套接字才有用。但我们正在考虑编写我们自己的实现,在同一服务器上,进程将在unix套接字上进行通信,并且在将使用tcp进行通信的服务器之间进行通信。值得吗?当然tcp套接字比unix套接字慢..因为它不通过网络并且不被tcp相关数据包裹。问题是多少?我找不到tcp和unix套接字之间基准

c - 测试 Fortran IPC : Sending 4 MiB of data using TCP/IP is equally fast as sending 100 B

我目前正在测试在两个Fortran程序之间有效传递数据的不同方法。我试过写入文件、管道和TCP/IP。我的测试结果如下所示。请注意,图表仅显示4*10^4B的时间,因为这是我为文件和管道设置的高度。4*10^6B测试只针对TCP/IP程序进行。为了测试执行时间,我使用了大多数Linux发行版中的time程序,即:time./program。然后我使用real值作为我的时间。很明显,写入文件和使用管道是线性的。有一些开销,但它非常简单。然而,TCP/IP协议(protocol)似乎不受影响-无论数据量如何。实际发生的是:B.f90启动并调用server.c,在localhost:5555

sockets - 当使用环回地址使用 TCP/IP 套接字执行 IPC 时,公共(public)网络堆栈是否会跳过在较低级别的 PDU 中构建消息的框架?

在某些环境(如Java)中,使用TCP/IP套接字在同一主机上使用“本地主机”地址(IPv4中的127.0.0.1或IPv6中的::1)的进程之间传递消息是很自然的。(因为Java倾向于不在其API中公开其他IPC机制)。显然,这可能比通过管道传递消息的IPC或使用共享内存的IPC慢很多。另一方面,如果TCP/IP网络堆栈意识到连接的两端都在环回接口(interface)上,它可能会做一些优化,这样效率可能与使用管道没有太大区别.但是常见操作系统(Windows、Linux)是否在其TCP/IP堆栈中实现了此类优化? 最佳答案 是的

java - "this"关键字 : Working mechanism in Java

学了一段时间的Java,第一次使用this关键字,搞得我很困惑。这就是我感到困惑的原因。我写了下面的代码:classBasicInheritanceTest3Base{privateintx=0;publicinty;publicvoida(){x++;this.x++;System.out.println("BasicInheritanceTest3Base.a()");b();this.b();System.out.println(x);System.out.println(y);}publicvoidb(){System.out.println("BasicInheritance

Python IPC - Twisted、RabbitMQ、

我想用Python创建2个应该相互通信的应用程序。其中一个应用程序应该像服务器一样运行,第二个应用程序应该是客户端的GUI。它们可以在同一系统(同一台机器上)或远程和不同设备上运行。我想问你,我应该使用哪种技术-AMQP消息传递(如RabbitMQ),Twisted服务器(或Tornado)或ZeroMQ并将应用程序连接到它。将来我想进行某种身份验证等。我已经阅读了很多问题和文章(比如这篇文章:Whydoweneedtouserabbitmq),很多人都在说“rabbitmq和twisted是不同的”。我知道他们是。我真的很想知道这些差异以及为什么在这种情况下这些解决方案中的一个会优于