Lua 如何:与子流程通信

Lua 如何:与子流程通信,lua,go,ipc,Lua,Go,Ipc,我有一个启动C/Lua过程的Go程序。现在我想在这两者之间进行交流。例如,在孩子的运行过程中(C/LUA过程),我想请求家长(GO程序)做一些计算并等待结果。我不喜欢使用stdin/stdout进行通信,因为它已经用于常规输出。现在我正在考虑使用套接字进行通信,但我不想重新发明轮子 这种交流方式的明显选择是什么 在Lua和Go之间传递对象是否有(或多或少)简单的标准方法?如果没有,文本块就足够了 你适合这个吗?看起来太过分了,但我在这里没有经验 除了您提到的所有常用IPC方法(是的,带有pro

我有一个启动C/Lua过程的Go程序。现在我想在这两者之间进行交流。例如,在孩子的运行过程中(C/LUA过程),我想请求家长(GO程序)做一些计算并等待结果。我不喜欢使用stdin/stdout进行通信,因为它已经用于常规输出。现在我正在考虑使用套接字进行通信,但我不想重新发明轮子

  • 这种交流方式的明显选择是什么
  • 在Lua和Go之间传递对象是否有(或多或少)简单的标准方法?如果没有,文本块就足够了
  • 你适合这个吗?看起来太过分了,但我在这里没有经验

除了您提到的所有常用IPC方法(是的,带有protobuf的unix套接字应该可以做到这一点,还有stdin/stdout),如果您运行嵌入在程序中的C/Lua代码,而不是将其作为进程启动,您实际上可以直接在两种语言之间进行通信

使用
cgo
模块,Go代码可以调用C函数,嵌入式C代码可以调用Go函数。请看这里:


此外,您还可以尝试使用两个可嵌入的Lua绑定库来调用Lua代码和Lua代码。请参见和

我现在通过常规tcp套接字与子流程对话。子进程(Lua)已经内置,在Windows、Mac和Linux上似乎可以正常工作

另外,我(现在)已经定义了自己的非常简单的协议,在第一步看起来还可以

以防万一有人感兴趣:并且孩子提交实现tcp连接