Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxで設定ファイルの絶対パスを取得する方法

Linuxで設定ファイルの絶対パスを取得する方法

  

設定ファイルが相対パスを使用している場合、通常Linuxプログラムには設定ファイルがあります。例: "../src/config.xml"

パスの下では、実行に問題はありません。

別のパスに切り替えた場合、実行に問題があるためファイルを見つけることができません。

スクリプトを書くときは、最初に実行ファイルに移動する必要があります。その後、パスが実行されます。

この影響を排除したい場合にデッドパスを書き込めない場合は、相対パスを絶対パスに変換する必要があります。

ステップ:

1.最初に、プログラムがある場所のパスを取得します。

2.相対パスを追加してから絶対パスを取得します。

注意:現在のパスではなく、getcwdで現在のパスを取得できます。プログラムの絶対パスではなく、そのときに私はこの間違いを犯しました!

以下に、プログラムのある場所のパスを取得する方法を示します。

方法1.セキュリティ上のリスクが気にならない場合は、procfsを使用し、次にreadlinkを使用して、現在のプロセスのpidを下のディレクトリに対応させます。 fileが指す場所が読み出されます(最初にprocfsをマウントする必要があることに注意してください)。

pit_t mypid = getpid();

sprintf(strsrc、 "/proc /%d /file"、mypid);

readlink(strsrc、strdest、LEN); //LENがあなたの最良の_POSIX_PATH_MAX

方法2. realpath関数を使い、次にdirnameを使い、最後に設定ファイルの絶対パスを切り出します。 Br>

文字パス[PATH_MAX];

文字* rpath = realpath(argv [0]、パス);

LOG_IT(LOG_MAIN、LOG_DEBUG、 "argv [0]:% s、realpath%s "、argv [0]、rpath);

char * base =ベース名(パス);

char * dir = dirname(パス);

LOG_IT(LOG_MAIN、LOG_DEBUG、 "ベース:%s、ディレクトリ%s"、ベース、ディレクトリ);

char conf_file [2048];

int maxlen_conf = 2048;

snprintf(conf_file、maxlen_conf、 "%s /%s "、dir、" ../src/config.xml ");

LOG_IT(LOG_MAIN、LOG_DEBUG、" conf_file%s "、conf_file);

Copyright © Windowsの知識 All Rights Reserved