ホームページ > バックエンド開発 > C++ > 異なるプラットフォーム間で C/C プログラムの実行ディレクトリを取得するにはどうすればよいですか?

異なるプラットフォーム間で C/C プログラムの実行ディレクトリを取得するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-24 17:49:09
オリジナル
918 人が閲覧しました

How Can I Get the Execution Directory of My C/C   Program Across Different Platforms?

プログラムのディレクトリの決定

C/C では、プログラムが実行されているディレクトリへの完全なパスを取得することが、クロスプラットフォーム アプリケーションにとって課題となる場合があります。この記事では、この問題に対処し、さまざまなプラットフォームとファイル システムに対応するソリューションを提供します。

プラットフォームに依存しないアプローチ

残念ながら、プログラムのディレクトリ パスを返す標準 C/C ライブラリ関数はありません。プラットフォームに依存しない方法。ただし、オペレーティング システム固有の API を使用すると、この結果を達成できます。

Windows

Windows では、GetModuleFileName 関数でモジュール (実行可能ファイル) へのフル パスを取得できます。

char pBuf[256];
size_t len = sizeof(pBuf);
int bytes = GetModuleFileName(NULL, pBuf, len);
if (bytes) {
    return bytes;
} else {
    return -1; // Error
}
ログイン後にコピー

Linux

Linux システムの場合、readlink 関数は次のシンボリック リンクにアクセスできます。 「/proc/self/exe」を使用して、プログラムの実行可能ファイルのパスを決定します。

char pBuf[256];
size_t len = sizeof(pBuf);
int bytes = MIN(readlink("/proc/self/exe", pBuf, len), len - 1);
if (bytes >= 0) {
    pBuf[bytes] = '';
    return bytes;
} else {
    return -1; // Error
}
ログイン後にコピー

これらのアプローチは、特定のプラットフォームとファイル システムに固有であることに注意してください。より包括的なソリューションが必要な場合は、Boost.filesystem や Qt などのクロスプラットフォーム ライブラリの使用を検討してください。

以上が異なるプラットフォーム間で C/C プログラムの実行ディレクトリを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート