>백엔드 개발 >C++ >C/C 프로그램의 실행 디렉터리 크로스 플랫폼을 어떻게 얻을 수 있나요?

C/C 프로그램의 실행 디렉터리 크로스 플랫폼을 어떻게 얻을 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2025-01-04 00:54:39990검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.