代码之家  ›  专栏  ›  技术社区  ›  stribika

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

  •  7
  • stribika  · 技术社区  · 14 年前

    当我只知道描述符时,我需要执行一个文件。也可能没有指向该文件的链接,因此不知何故查找该名称不是一个选项。所有execve()、execvp()等函数都采用一个文件名。dlopen()还具有一个名称。

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

    2 回复  |  直到 14 年前
        1
  •  8
  •   avakar    14 年前

    使用 fexecve .

    PS:读取文件并调用一些函数指针绝对是 好啊。:)

        2
  •  1
  •   SoapBox    14 年前

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

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

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