C での実行可能ファイルのフル パスの検索
C および C では、現在実行中のプログラムのフル パスを決定するのが困難な場合があります。これは、プログラム名を含む argv[0] が完全なパスを提供しないことが多いためです。
Unix ベースのシステム
実行可能ファイルの場所を確実に取得するにはUnix システムでは「/proc」:
- を使用しますreadlink("/proc/self/exe", buf, bufsize) (Linux)
- readlink("/proc/curproc/file", buf, bufsize) (FreeBSD)
を使用する- readlink("/proc/self/path/a.out", buf, bufsize) (Solaris)
「/proc」のない Unix システムの場合:
argv[0] が "/" で始まる場合、それは絶対値ですpath.- argv[0] に「/」が含まれている場合は、現在の作業ディレクトリに追加します。
- $PATH で指定されたディレクトリで argv[0] を実行可能ファイルとして検索します。
-
Windows
Windows 上システムの場合は、次のコードを使用します。
GetModuleFileName(NULL, buf, bufsize);
ログイン後にコピー
追加の考慮事項
実行可能ファイルがシンボリックリンクであるかどうかを確認し、それに応じて解決します ( Linux の「/proc」メソッド)。- 設定するのは呼び出しプロセスの責任であることに注意してください。特に信頼できない状況 (setuid 実行可能ファイルなど) では、argv[0] が正しく実行されます。
-
以上がC/C で実行可能ファイルのフルパスを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。