栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从另一个进程的内存中执行一个进程?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从另一个进程的内存中执行一个进程?

简短的回答:不。

长答案:不写到磁盘就可以这样做,但很棘手。从理论上讲,您可以编写自己的elf加载器,该加载器读取二进制文件,映射一些内存,根据需要处理动态链接,然后转移控制权,但这需要进行大量工作,这几乎是不值得的。

下一个最佳解决方案是将其写入磁盘并尽快调用取消链接。该磁盘甚至不必是“实际”磁盘,它可以是tmpfs或类似磁盘。

我最近使用的替代方法是不传递完整的已编译二进制文件,而是传递LLVM字节码,然后可以将其适当地进行JIT
/解释/保存。这还具有使您的应用程序在异构环境中工作的优势。

它可能是很有诱惑力尝试的组合

fmemopen
fileno
并且
fexecve
,但这并不原因有二:

  1. fexecve()
    联机帮助页:

“文件描述符fd必须以只读方式打开,并且调用者必须有权执行 它所引用的文件

即它必须是引用文件的fd。

  1. fmemopen()
    联机帮助页:

“没有与这些函数返回的文件流关联的文件描述符(即,

fileno(3)
如果在返回的流上调用将返回错误)”



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412468.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号