我知道有可能通過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