Necesito ejecutar un archivo cuando solo conozco el descriptor. También es posible que no haya enlaces al archivo, por lo que descubrir el nombre de alguna manera no es una opción. Todas las funciones execve(), execvp(), etc. toman un nombre de archivo. dlopen() también toma un nombre.¿Cómo ejecutar un programa desde el descriptor de archivo?
Las soluciones feos (como leer el archivo y llamar a algún puntero de función) están bien.
Quiero decir que está bien si no hay soluciones simples. No haré eso si puedo llamar a fexecve(). Gracias. – stribika
Si no fueras compatible con fexecve, podrías hacer algunas cosas horribles con mmap y libelf, como crear un fdlopen. Eso apestaría, sin embargo. Sin embargo, me alegra aprender sobre fexecve. Me lo he preguntado, pero nunca lo había visto antes, y nunca TENÍA que tenerlo. – nategoose
también puede usar los archivos/dev/fd/n o/proc/self/fd/n, simplemente reemplace n con el número de archivo y páselo a una llamada ejecutiva normal. Así es como lo hace fexecve bajo el capó. –