我需要在只知道文件描述符的情况下执行一个文件。有可能没有任何链接到该文件,因此某种方式找出其名称不是一个选项。所有的execve(), execvp()等函数都需要一个文件名。dlopen()也需要一个名称。
丑陋的解决方案(如读取文件并调用某个函数指针)也可以接受。
丑陋的解决方案(如读取文件并调用某个函数指针)也可以接受。
fexecve
函数。有趣。我认为你最好的选择是使用你拥有的FD来编写一个临时文件,然后使用普通的exec调用来执行它。
你可以使用mkstemp
来生成一个保证唯一的文件名。然后从你的文件描述符中读取内容并将其转储到临时文件中。然后在exec调用中使用mkstemp给出的名称。
如果你不想写一个新文件,那么你唯一的选择就是手动解析exe文件图像,在内存中正确加载它,然后调用它的main()函数。这会重复很多操作系统中已经存在的功能,我认为你不想这样做。这很难做到,并且似乎不值得这样做。