我知道有可能通过realpath()函数获取文件的绝对路径。但是,根据bugs部分的manpage,它的实现有一些问题。详细情况如下:如何在linux下使用realpath()以编程方式获取文件的绝对路径?
BUGS使用此功能
避免。它由于设计而中断(除非使用非标准resolved_path == NULL功能),因此无法为输出缓冲区resolve_path确定合适的大小。根据POSIX,一个PATH_MAX大小的缓冲区就足够了,但是PATH_MAX不需要是一个定义的常量,并且可能必须使用pathconf(3)来获得。并且询问pathconf(3)并没有真正的帮助,因为一方面POSIX警告pathconf(3)的结果可能很大并且不适合mallocing内存。另一方面,pathconf(3)可能返回-1来表示PATH_MAX没有界限。
libc4和libc5实现包含缓冲区溢出(在libc-5.4.13中修复)。因此,像mount(8)这样的set-user-ID程序需要一个私有版本。
所以,问题是什么是获得文件的绝对路径的最佳做法?
复制“[编程式检索OS X命令行应用程序的绝对路径](http://stackoverflow.com/questions/799679/programatically-retrieving-the-absolute-path-of-an-os-的x命令行应用内)“? – bortzmeyer 2009-07-23 19:45:38
不,他们不是一回事。我想知道如何获得普通文件的绝对路径,而不是可执行文件的路径。 – jcadam 2009-07-24 15:12:26