Articles of 进程间通信

在同一个Ubuntu机器上运行的独立进程如何相互通信?

这个问题是为了独立的语言和连接方法。 其实find方法就是问题。 我知道我可以通过像prog1 | prog2这样的调用来直接pipe理两个进程 prog1 | prog2在shell中,我已经读了一些关于RPC和套接字的内容。 但是,一切都太抽象了,不能真正掌握它。 例如,我不清楚如何创build套接字,如果每个进程需要创build一个套接字,或者如果许多进程可以使用相同的套接字将消息传递给对方,或者如果我可以完全摆脱套接字。 有人可以解释一下Linux中的进程间通信是如何工作的吗?

所有types的进程间/线程间通信都需要系统调用吗?

在Linux中, 做所有types的进程间通信是否需要系统调用? 进程间通信types如 Pipes Signals Message Queues Semaphores Shared Memory Sockets 所有types的线程间通信都需要系统调用吗? 我想知道所有进程间通信和线程间通信是否涉及从用户模式切换到内核模式,以便内核运行来执行通信? 由于系统调用都涉及这样的切换,所以我询问通信是否需要系统调用。 例如,“共享内存”可以用于进程间和线程间通信,但是我不确定是否需要系统调用或操作系统内核的参与来接pipeCPU来执行某些操作。 谢谢。

使用COM在Windows上的本地机器上的进程间通信

我正在研究使用COM和C ++在Windows上进行进程间通信的选项。 我在MSDN上find了这篇文章 ,提供了Windows的进程间通信选项列表,而COM就是其中之一。 但不幸的是,COM选项只是没有太多的细节。 有人有关于如何使用COM在Windows上的进程间通信文档或其他资源的任何指针? 我不感兴趣与远程机器通信(所以: 没有DCOM ); 我只是在同一本地机器上的进程间通信感兴趣。 这个想法是定义一些实现一些自定义通信协议的自定义COM接口,然后有一个服务器程序和一个客户端程序(每个程序都在自己的进程中运行在同一本地计算机上),并使用COM在两者之间进行通信(例如,客户端向服务器发出请求,服务器返回正确的答案,所有使用COM接口的东西)。 所以,例如:是否有预定义的COM接口来实现进程间通信? 如果是这样,他们是什么? 有关这个主题的一些教程或更详细的指南将是有帮助的。

如何使用Windows中的AutoResetEvent移植到Linux Interprocess事件

我当前的Windows代码使用一个命名事件进行进程间通信。 可以有很多进程在等待事件,当它被发信号时,所有的等待进程被释放,然后事件返回到非信号状态。 我为此使用了PulseEvent函数。 我如何在Linux中做到这一点? pthread函数似乎是线程间通信。 我没有看到信号量在哪里可以提供与Windows一样的行为。 Posix信号似乎只释放一个等待线程。 如果信号量可以释放所有等待的线程,那么这将工作。 Linux中有什么我失踪?

基础知识在Python中创build一个MML控制台

我期待有一个用Python编写的MML(人机语言)控制台作为控制和监视后端进程的唯一入口点。 基本上可以: 附加到现有的后端进程 如果后端进程没有运行,仍然打开控制台,并能够产生后端进程(通过引入正确的命令) 自动完成允许的命令 能够根据引入的命令更改后端进程的行为 什么是实现这个目标的最好方法? 如何使用可以打开和closures的控制台来传递后端进程,而不会终止后端进程,这意味着控制台不会是该进程的父级。 需要用Python编写,并可以在CentOS上运行,也许一些操作系统工具可以帮助沟通过程?

在C中的subprocess和父进程之间的通信linux:父进程不阻塞

我想让父进程和subprocess在C使用pipe道进行通信。 首先,我想要父母传递一个string,然后孩子承认它。 我创build了两个文件描述符。 一个为父母对孩子即读音pipe和另一个反向笔pipe。 问题是它不把我的数据作为input。 另外,我希望printf语句(如“input您的数据”)被打印一次,但自fork之后,有两个进程,所以它们被显示两次。 任何替代scheme? //readpipe[0] = child read //readpipe[1]= parent write //writepipe[0]=parent read //writepipe[1]=child write #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> #include <string.h> int main(void) { pid_t pid; int r; /* Hope this is big enough. */ char buf[1024]; char cp[50]; char ans; int readpipe[2]; int writepipe[2]; int a; int […]

C ++:在Windows上与高级subprocess进行通信

我有以下设置:我正在写的DLL在运行时dynamic加载,并提供一些类似API的function,以主机应用程序。 主机应用程序没有运行pipe理员权限(因此我的DLL不是)。 我的DLL需要完成的一些任务需要pipe理员权限,特别是我必须保存和复制文件到程序文件文件夹。 我目前的做法是通过ShellExecute和“runas”动词来启动外部应用程序,从而触发UAC提示。 这尤其意味着由用户触发的多个后续操作总是会导致额外的UAC提示,这可能是非常烦人的。 所以这个想法是一次启动一个单独的,升级的过程,然后在后台运行并接收相应的命令并执行它们。 这让我想起了我的问题:哪一种沟通方式甚至可能在一个未升级的过程和其较高的儿童过程之间? 由于显而易见的安全原因,访问stdin似乎被禁止,但是命名pipe道或共享内存呢? 是否适用相同的限制?