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

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

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-04 00:54:391053ブラウズ

How Can I Get a C/C   Program's Execution Directory Cross-Platform?

C/C でプログラムの実行ディレクトリを取得する

問題:

プログラムが保存されているディレクトリのフルパスを決定する実行は、多くのプログラミング シナリオにおける基本的なタスクです。ただし、さまざまなプラットフォームやファイル システムにわたってこれを実現することは、システム固有の実装により困難になる場合があります。このプラットフォームに依存せずにこのことを実現するための簡潔で効率的な方法を提供していただけますか?

解決策:

オペレーティング システムによっては、これを取得するための個別のアプローチがあります。情報:

Windows:

#include <windows.h>

int main() {
  char pBuf[256];
  size_t len = sizeof(pBuf);
  int bytes = GetModuleFileName(NULL, pBuf, len);
  return bytes ? bytes : -1;
}

Linux:

#include <string.h>
#include <unistd.h>

int main() {
  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;
}

これらのメソッドは、低レベルのシステム関数に依存してオペレーティング システムから直接パスを取得します。プラットフォームに依存しない機能。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。