Вопрос:

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

c exec file-descriptor

1122 просмотра

2 ответа

2305 Репутация автора

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

Уродливые решения (такие как чтение файла и вызов некоторого указателя на функцию) - это нормально.

Автор: stribika Источник Размещён: 23.05.2010 04:26

Ответы (2)


9 плюса

27600 Репутация автора

Решение

Использование fexecve.

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

Автор: avakar Размещён: 23.05.2010 04:30

1 плюс

18271 Репутация автора

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

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

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

Автор: SoapBox Размещён: 23.05.2010 04:32
Вопросы из категории :
32x32