C/C では、プログラムが実行されているディレクトリへの完全なパスを取得することが、クロスプラットフォーム アプリケーションにとって課題となる場合があります。この記事では、この問題に対処し、さまざまなプラットフォームとファイル システムに対応するソリューションを提供します。
残念ながら、プログラムのディレクトリ パスを返す標準 C/C ライブラリ関数はありません。プラットフォームに依存しない方法。ただし、オペレーティング システム固有の API を使用すると、この結果を達成できます。
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 システムの場合、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 サイトの他の関連記事を参照してください。