【发布时间】:2012-05-18 09:59:41
【问题描述】:
我想要一个小型“应用程序加载器”程序,它通过 TCP 从外部服务器接收其他二进制应用程序文件并运行它们。
我可以通过将传输的文件保存到硬盘并使用 system() 调用来运行它来做到这一点。但是,我想知道是否可以在不接触硬盘驱动器的情况下从内存启动新应用程序。
加载新应用程序后,加载程序应用程序的状态无关紧要。我更喜欢坚持 C,但也欢迎 C++ 解决方案。如果可能的话,我还想坚持使用标准的 Linux C 函数并且不使用任何外部库。
【问题讨论】:
-
是的,这是可能的,但它有点复杂。您必须模拟操作系统并将二进制文件映射到内存等。
-
你可以把它写到 ramdisk 上的一个文件中
-
我也倾向于认为,在较新的 CPU 上,任何 级别的操作系统安全性都会尽最大努力确保不会发生这种情况。这当然是可行的,但在现实世界的发行版中使用会很痛苦(我希望)
-
(也就是说,您可能会看看
glibc的ld-linux实际上做了什么,因为这是它对普通的磁盘可执行文件所做的。它并不漂亮...... ) -
@BRPocock:实际上是it's done very often。