如何从文件描述符执行程序?

当我只知道描述符时,我需要执行一个文件。 也有可能没有链接到文件,所以找不到名称不是一个选项。 所有execve(),execvp()等函数都采用文件名。 dlopen()也有一个名字。

丑陋的解决方案(如读取文件和调用某些函数指针)都可以。

使用fexecve

PS:读取文件并调用一些函数指针绝对不行 。 🙂

有趣。 我认为你最好的选择是使用你必须编写临时文件的FD,然后使用普通的exec调用来执行它。

您可以使用mkstemp创建保证唯一的文件名。 然后从文件描述符中读取内容并将其转储到临时文件中。 然后使用mkstemp在exec调用中给你的名字。

如果由于某种原因不想写一个新文件,那么我认为你唯一的另一个选择是手动解析exe文件图像,在内存中正确加载它,然后调用它的main()函数。 这复制了操作系统中已经存在的许多function,我认为你不想这样做。 很难做到正确,似乎不值得努力。