2016-08-15 1 views
0

나는 이것을 묻는 방법을 모르지만 최선을 다할 것이다. 어쨌든, 제 상황은 이렇습니다 : 프로그램의 실행 파일 경로 또는 프로그램과 동일한 디렉토리에있는 모든 시간에 내 앱/실행 파일에 액세스 할 수있게하려는 파일이 있습니다. 이후로 내 프로그램이 모든 CWD에서 실행되고 여전히 필요한 모든 것을 얻을 수 있기를 바랍니다. 내 실행 파일과 관련된 파일을 가져 오는 가장 좋은 방법이나 방법이 무엇인지 알고 싶습니다. 그러면 사용자의 CWD가 엉망이되지 않을까요?CLI 환경의 로컬 응용 프로그램 파일 액세스?

내 머리에 한 접근 방식은 이것이다 :

  1. 가져 오기 프로그램의 디렉토리는 OS에 의존 기능을 사용.
  2. 일부 문자열 조작을 사용하여 프로그램의 홈 디렉터리를 가져옵니다.
  3. 해트 트릭 CWD 명령을 사용하지 않고도 런타임 중에 필요한 파일에 문자열을 추가하십시오.

Windows/Linux에 이미이 문제를 해결하기위한 방법이 있을지는 모르겠지만 더 나은 대안이 있는지 알고 있어야한다고 생각했습니다.

감사합니다.

+1

http://stackoverflow.com/questions/1023306/finding- current-executables-path-without-proc-self-exe –

+0

그건 내가 생각하기에, 대체 방법이 있는지 확실하지 않았다. – ajm113

답변

-1

C 바이너리에서 액세스하려는 파일이 동일한 디렉토리 또는 하위 디렉토리에있는 경우 "."을 사용하여 직접 액세스 할 수 있습니다. 현재 디렉토리입니다.

또는 단순히 getwd 기능을 사용할 수 있습니다.

char *getwd(char *buf); 

일반적으로 (이 코드 조각은 C 바이너리의 현재 디렉토리를 출력한다)과 같이 사용할 수 있습니다

int main() 
{  
char buf[4096]; 
getwd(buf); 
printf(but); 
} 
+0

하지만 바이너리가 터미널에 저장된 디렉토리 외부에서 바이너리가 호출되는 경우 어떻게해야합니까? 즉 앱은/etc/bin /에 저장되지만 사용자의 홈 폴더에서 실행되고 있습니다. 설정 파일이나 앱의 폴더에있는 파일을 가져 오는 방법은 무엇입니까? – ajm113

관련 문제