Ruby:在内存中执行二进制文件?

Ruby:在内存中执行二进制文件?,ruby,memory,system,Ruby,Memory,System,可以读取ruby文件中的二进制文件并直接在内存中执行吗 例如,类似这样的事情: x = IO.read('/bin/ls') execute(x) 我尝试了system(x),但它给出了: ArgumentError:string包含空字节system()和exec()都将命令字符串传递给操作系统,以使其加载并启动外部命令,这不是您所要求的 有些东西可以用C编写,因为Ruby就是这样扩展的。关于谷歌的大量信息: system()和exec()都将命令字符串传递给操作系统,让其加载并启动外部命令

可以读取ruby文件中的二进制文件并直接在内存中执行吗

例如,类似这样的事情:

x = IO.read('/bin/ls')
execute(x)
我尝试了
system(x)
,但它给出了:
ArgumentError:string包含空字节

system()和exec()都将命令字符串传递给操作系统,以使其加载并启动外部命令,这不是您所要求的

有些东西可以用C编写,因为Ruby就是这样扩展的。关于谷歌的大量信息:

system()和exec()都将命令字符串传递给操作系统,让其加载并启动外部命令,这不是您所要求的

有些东西可以用C编写,因为Ruby就是这样扩展的。关于谷歌的大量信息:


我认为你做不到这一点。当一个可执行文件启动时,动态链接器需要做大量的修复链接


最简单的解决方案是将可执行文件写入某个地方的临时磁盘文件,然后执行该文件。

我认为您无法做到这一点。当一个可执行文件启动时,动态链接器需要做大量的修复链接


最简单的解决方案是将可执行文件写入某个地方的临时磁盘文件中,然后执行该文件。

请添加有关您试图处理的内容的信息?可能有更好的解决方案…我只想加载程序字节码,并从内存而不是硬盘执行它。它类似于system()和exec(),但我想通过将加载在内存中的程序而不是硬盘传递给系统来实现同样的目的。请添加有关您试图解决此问题的信息?可能有更好的解决方案…我只想加载程序字节码,并从内存而不是硬盘执行它。它类似于system()和exec(),但我想通过将加载在内存中的程序传递到系统而不是硬盘来实现。除了字节码或asm码,我们不能做类似于eval()的事情吗?除了字节码或asm码,我们不能做类似于eval()的事情吗?