Sé que es posible obtener una ruta de acceso absoluta de un archivo con la función realpath(). Sin embargo, según la sección BUGS de la página de manual, hay algunos problemas en su implementación. Los detalles son los siguientes:¿Cómo obtener la ruta absoluta de un archivo mediante programación con out realpath() en Linux?
FALLOS
evitar el uso de esta función. Está roto por diseño ya que (a menos que se use la función no estándar resolve_path == NULL) es imposible determinar un tamaño adecuado para el buffer de salida, resolved_path. Según POSIX, basta con un búfer de tamaño PATH_MAX, pero PATH_MAX no necesita ser una constante definida, y puede tener que obtenerse usando pathconf (3). Y preguntar pathconf (3) realmente no ayuda, ya que, por un lado, POSIX advierte que el resultado de pathconf (3) puede ser enorme e inadecuado para la memoria mallocing. Y, por otro lado, pathconf (3) puede devolver -1 para indicar que PATH_MAX no está limitado.
La implementación de libc4 y libc5 contiene un desbordamiento de búfer (corregido en libc-5.4.13). Por lo tanto, los programas set-user-ID como mount (8) necesitan una versión privada.
Entonces, la pregunta es, ¿cuál es la mejor práctica para obtener la ruta absoluta de un archivo?
Duplicado de "[Recuperando de forma programática la ruta absoluta de una aplicación de línea de comandos de OS X] (http://stackoverflow.com/questions/799679/programatically-retrieving-the-absolute-path-of-an-os- x-command-line-app) "? – bortzmeyer
No. No son lo mismo. Quiero saber cómo obtener la ruta absoluta de un archivo ordinario en lugar de la ruta de ejecutable. – jcadam