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

时间:2010-04-01 15:30:28

标签: ruby memory system

是否可以在ruby文件中读取二进制文件并直接在内存中执行?

例如:

x = IO.read('/bin/ls')
execute(x)

我尝试了system(x),但它给出了: ArgumentError: string contains null byte

2 个答案:

答案 0 :(得分:1)

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

可以用C语言编写,因为这是Ruby的扩展方式。有关Google的大量信息:

http://www.google.com/search?client=safari&rls=en&q=extend+ruby+with+c&ie=UTF-8&oe=UTF-8

答案 1 :(得分:0)

我认为你无法做到这一点。当可执行文件启动时,动态链接器需要做很多修复链接。

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