Python与C之间依赖于os的程序间通信

2024-06-09 21:54:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我几乎不知道我在这里做什么,我以前从来没有做过这样的事情,但是我和一个朋友正在编写竞争的象棋程序,他们需要能够互相交流。在

他将主要用C编写,我的大部分将用Python编写,我可以看到一些选项:

  • 交替地写入临时文件或连续的临时文件。由于通信不会以任何方式庞大,这可以工作,但似乎是一个丑陋的工作,我周围的程序将不得不不断检查更改/新的文件,这似乎是丑陋的。在
  • 找到操纵管道的方法,即。我的.py|/他的。这似乎有点死路一条。在
  • 使用插座。但我不知道我会做什么,所以有人能给我一些阅读材料的指针吗?我不确定是否有独立于操作系统、独立于语言的方法。是否需要某种管理服务器程序来管理?在
  • 使用某种HTML协议,这似乎有点过头了。我不介意程序必须在同一台机器上运行。在

人们推荐什么?我从哪里开始阅读?在


Tags: 文件方法py程序语言管道选项方式
3条回答

您可以使用Protobuf作为程序间协议,并读取/写入每一个文件。在

您可以每隔n秒读取一次中间文件。在

一旦你有了这个功能,你就可以使用套接字了,每个程序都会启动一个服务器并等待连接。在

变化应该很小,因为协议已经是原型了。因此,您必须更改的唯一位置是从套接字或文件读取的位置。在

无论哪种情况,您都需要一个交换协议。在

编辑

我读错了,我以为是C++。在

总之,这里有对protobuf的C支持,但仍在进行中

http://code.google.com/p/protobuf-c/

如果您希望并需要真正独立于操作系统、独立于语言的进程间通信,那么套接字可能是最佳选择。在

这将允许两个程序在不同的机器之间进行通信(无需更改代码)。在

阅读材料,这里有一个Python Socket Programming How To。在

两种可能性:

  • 使用IP插座。Python文档中有some examples。(如果你只使用基本的读/写工具,其实没那么难。)另一方面,C语言中的套接字通常不那么容易使用。

  • 创建第三个应用程序。它使用子进程启动两个应用程序,并通过管道与两个应用程序进行通信。chess应用程序必须只能读/写stdin/stdout。在

    这有一个额外的好处,这个应用程序可以检查移动是否合法。这有助于你发现漏洞,保持游戏公平。

相关问题 更多 >