Как выполнить программу от дескриптора файла?

Я должен выполнить файл, когда я только знаю дескриптор. Также возможно, что нет никаких ссылок на файл, настолько узнающий, что имя так или иначе не является опцией. Весь execve (), execvp (), и т.д. функционирует, берут имя файла. dlopen () также берет имя.

Ужасные решения (как чтение файла и вызов некоторого указателя функции) в порядке.

7
задан stribika 23 May 2010 в 16:26
поделиться

2 ответа

Используйте fexecve .

PS: чтение файла и вызов некоторого указателя функции определенно не нормально. :)

9
ответ дан 7 December 2019 в 01:17
поделиться

Интересно. Я думаю, что лучше всего будет использовать FD для записи временного файла, а затем выполнить его с помощью обычного вызова exec.

Вы можете использовать mkstemp для создания гарантированно уникального имени файла. Затем прочитайте содержимое из дескриптора файла и сбросьте его в временный файл. Затем используйте имя, данное вам mkstemp, в вызове exec.

Если вы по каким-то причинам не хотите писать новый файл, то, думаю, единственным вариантом будет ручной разбор образа exe-файла, загрузка его в память и вызов его функции main(). Это дублирует множество функций, которые уже существуют в ОС, и я не думаю, что вы хотите это делать. Это будет трудно сделать правильно, и не думаю, что это стоит усилий.

1
ответ дан 7 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: