Как выполнить программу из файлового дескриптора?
1122 просмотра
2 ответа
Мне нужно выполнить файл, когда я знаю только дескриптор. Также возможно, что нет никаких ссылок на файл, так что узнать имя как-то не вариант. Все функции execve (), execvp () и т. Д. Принимают имя файла. dlopen () также принимает имя.
Уродливые решения (такие как чтение файла и вызов некоторого указателя на функцию) - это нормально.
Автор: stribika Источник Размещён: 13.11.2019 11:35Ответы (2)
9 плюса
Использование fexecve
.
PS: чтение файла и вызов некоторого указателя на функцию определенно не в порядке. :)
Автор: avakar Размещён: 23.05.2010 04:301 плюс
Интересно. Я думаю, что вам лучше всего использовать FD, который вы должны написать временный файл, а затем выполнить его с помощью обычного вызова exec.
Вы можете использовать, mkstemp
чтобы сделать гарантированное уникальное имя файла. Затем прочитайте содержимое из вашего файлового дескриптора и поместите его во временный файл. Затем используйте имя, данное вам mkstemp в вызове exec.
Если вы по какой-то причине не хотите писать новый файл, то я думаю, что единственным вариантом будет вручную проанализировать образ exe-файла, правильно загрузить его в память и затем вызвать его функцию main (). Это дублирует многие функциональные возможности, которые уже существуют в ОС, и я не думаю, что вы хотите это делать. Это будет трудно получить право, и, похоже, не стоит усилий.
Вопросы из категории :
- c Как вы форматируете unsigned long long int, используя printf?
- c What are the barriers to understanding pointers and what can be done to overcome them?
- c Как реализовать продолжения?
- c Как вы передаете функцию в качестве параметра в C?
- c Как получить список каталогов в C?
- c В чем разница между #include <filename> и #include "filename"?
- exec How to retrieve PHP exec() error responses?
- exec Выполнение приложения Java в отдельном процессе
- exec Как запустить полностью независимый процесс из Java-программы?
- exec Можно ли выполнить строку в MySQL?
- exec Выполнение кода Python, содержащегося в строке
- exec Как exec работает с местными жителями?
- file-descriptor Как выполнить программу из файлового дескриптора?
- file-descriptor Вопрос о STDIN STDOUT STDERR
- file-descriptor Исключение при вызове метода setDataSource (FileDescriptor) (ошибка: состояние = 0x80000000)
- file-descriptor одновременное чтение по файловому дескриптору из двух потоков
- file-descriptor Что такое файловые дескрипторы, объясняемые простыми словами?
- file-descriptor Как закрыть дескриптор файла с помощью команды оболочки Linux