1

相対パスを使用してデータファイルをロードする古いCプログラム(ソースを取得)を修正したいのですが、実行可能ファイルが配置されているディレクトリから呼び出されることを期待しています。LoadEx("./dataFile", dataFile);もちろん、別のディレクトリからプログラムを呼び出すことはdataFileできません。ロードされました。

dataFiles実行可能ファイルのディレクトリを基準にしてロードするようにCプログラムを変更するにはどうすればよいですか?

編集: 私の元の質問は適用できなくなったので、少なくとも次のように重複しています:-Cで実行可能ファイルの場所を見つけるにはどうすればよいですか? -Linuxで相対パスを使用してファイルを開く方法は? - / proc / self/exeを使用せずに現在の実行可能ファイルのパスを検索する

4

1 に答える 1

2

どうして欲しくないのreadlink("/proc/self/exe")?これは、Linuxで実行可能ファイルのパスを見つける方法です。

他の唯一の方法は、環境からPATHをプルしgetenv()、PATHディレクトリを調べてargv[0]に一致するものを探すことです。最初のオプションははるかに簡単です。

whichまたは、実行可能ファイルに対して最初にを実行し、その結果をコマンドライン引数またはそのようなハックとして渡した後、プログラムを開始するスクリプトを記述します。

于 2012-02-04T05:13:36.100 に答える