realpath()関数でファイルの絶対パスを取得することは可能です。しかし、バグのセクションによると、その実装にはいくつかの問題があります。詳細は以下の通りです:linuxの下でrealpath()を使ってファイルの絶対パスをプログラムで取得する方法は?
BUGS
を、この機能を使用することは避けてください。非標準のresolved_path == NULL機能を使用しない限り、出力バッファresolved_pathに適したサイズを決定することは不可能であるため、これは設計上の理由で壊れています。 POSIXによれば、サイズPATH_MAXのバッファで十分ですが、PATH_MAXは定義された定数である必要はなく、pathconf(3)を使用して取得する必要があります。そして、pathconf(3)の結果は実際には助けになりません。なぜなら、POSIXは、pathconf(3)の結果が膨大で、メモリの割り当てには適していないと警告しているからです。一方、pathconf(3)は、PATH_MAXが束縛されていないことを示すために-1を返すことがあります。
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-command-line-app) "? – bortzmeyer
いいえ、同じものではありません。実行可能ファイルのパスではなく、通常のファイルの絶対パスを取得する方法を知りたい。 – jcadam