Golang从内存中的二进制数据执行子进程

Golang从内存中的二进制数据执行子进程,go,memory,exec,executable,Go,Memory,Exec,Executable,我知道可以使用类似的项目从字符串运行Golang代码,也可以运行它们,但是否可以运行作为变量存储的二进制文件,而不将其作为子进程写入文件?二进制文件已经作为一个变量存在于内存中,因此是否可以以某种方式执行它 若我并没有弄错的话,可执行内存和数据内存之间存在差异,那个么这会阻止实现这一点吗 我提出这个问题的原因是,我正在编写一个学习Golang的项目,并希望使其尽可能模块化,包括无文件更新和二进制(也包括无文件)有效负载 编辑:欢迎使用任何解决方案,但首选跨平台解决方案 Edt2:根据这样的答案

我知道可以使用类似的项目从字符串运行Golang代码,也可以运行它们,但是否可以运行作为变量存储的二进制文件,而不将其作为子进程写入文件?二进制文件已经作为一个变量存在于内存中,因此是否可以以某种方式执行它

若我并没有弄错的话,可执行内存和数据内存之间存在差异,那个么这会阻止实现这一点吗

我提出这个问题的原因是,我正在编写一个学习Golang的项目,并希望使其尽可能模块化,包括无文件更新和二进制(也包括无文件)有效负载

编辑:欢迎使用任何解决方案,但首选跨平台解决方案


<2> Edt2:根据这样的答案,C++中是不可能的/非常困难的。看起来,这样做的主要原因是动态链接库。由于Golang是静态链接的,这会更容易吗?

不,没有可移植的方法来实现这一点。

是的,尝试这种方法。

我不确定投票失败的原因是什么。我相信这是我事先研究过的一个合理问题。我也将类似的问题联系起来,这些问题并没有完全回答我的问题,并添加了一个进一步的问题以突出区别。我能提出一些建设性的批评吗?看看——你可以通过Go使用系统调用或cgo来完成所有这些。不过,像这样运行Go代码更为棘手,因为它需要加载时重新定位/链接等。仅仅快速浏览一下,它看起来非常有趣和有用。谢谢谢谢你的回答。不过,您似乎暗示有一些不可移植的方法。是这样吗?@TR_SLimey是的。你能举一些例子,比如一些要搜索的链接或关键字吗?虽然单平台代码并不理想,但我这样做主要是为了学习该语言,因此它仍然会很有帮助。@TR_SLimey在使用系统调用和cgo时,您不会学习该语言的任何内容。我认为这意味着我应该看看如何在C中实现这一点,然后使用cgo?谢谢,谢谢你的回答!不幸的是,该项目似乎实际上创建了一个临时文件并执行它,而不是使用内存中已有的文件:(