17

GNU/Linux 上の C/C++ で、特定の相対パスからファイルまたはディレクトリの絶対パスを特定するにはどうすればよいですか?
については知ってrealpath()いますが、存在しないファイルでは機能しません。

ユーザーが../non-existant-directory/file.txtと入力し、プログラムの作業ディレクトリが であるとし/home/user/ます。
必要なのは、 を返す関数です/home/non-existant-directory/file.txt

特定のパスが特定のサブディレクトリにあるかどうかを確認するには、この関数が必要です。

4

2 に答える 2

10

試してみてくださいrealpath。失敗した場合は、最後から 1 つずつパス コンポーネントの削除を開始し、realpath成功するまで再試行します。realpath次に、削除したコンポーネントを、成功した呼び出しの結果に追加します。

含まれているディレクトリが存在し、そこにファイルを作成したいだけの場合は、削除する必要があるコンポーネントは最大でも 1 つだけです。

別のアプローチは、最初にファイルを作成realpathしてから.

于 2012-06-14T13:42:15.830 に答える