0

(抱歉,如果这有点含糊,因为我刚刚开始使用 Python。)

我正在创建一个 SublimeText 2 intellisense 插件,该插件与从 Node.js 脚本生成的正在运行的命令行节点服务器进行通信。我想与之通信的节点应用程序可以在这里找到: https ://github.com/clausreinke/typescript-tools 。(请注意,一旦调用 tss 命令,它就会启动它自己的子进程命令行 repl,它需要接收要执行的命令。将命令发送到该命令行本身就是一个完全不同的问题,我还没有解决。 )

我可以通过以下方式成功与节点“交谈”:

self.process = subprocess.Popen( self.args,
                stdin = subprocess.PIPE,
                stdout = subprocess.PIPE,
                stderr = subprocess.STDOUT)

self.result = self.process.communicate()[0]

使用

self.thread = NodeJS( args )
self.thread.start()
self.handle_thread( self.thread )

问题是,一旦 node.js 文件被执行,它就会关闭管道并退出 IO 进程。对该进程的后续调用返回一个

ValueError: I/O operation on closed file

我的问题是:如何启动节点应用程序,在后台运行它,然后从 Python 连续“管道”命令到它?

我想

  1. 插件加载时启动 node.js 服务器并使其在后台运行
  2. 监听我然后发送到节点的键输入(已经工作)
  3. 将正在运行的节点进程的输出(在查找定义之后)传回python,然后显示输出,但不要关闭线程或进程

除了连续的异步来回,所有步骤都完成了,我似乎无法弄清楚。

任何帮助,将不胜感激。

4

1 回答 1

1

在 Python 中创建一个 Unix Domain 套接字或邮槽,在 Node.js 中连接到它,并将其用作您的通信通道。

于 2013-01-01T04:06:36.480 回答