문제

저는 리눅스에서 C 프로그램을 작성하고 있습니다.execv()와 같은 명령에는 C 문자열 형식의 경로가 필요합니다.C 스타일 문자열 형식으로 현재 경로를 반환하는 명령이 있습니까?

도움이 되었습니까?

해결책

getcwd():

개요

#include <unistd.h>

char *getcwd(char *buf, size_t size);

설명

그만큼 getcwd() 함수는 다음이 가리키는 배열에 현재 작업 디렉터리의 절대 경로 이름을 배치해야 합니다. buf 및 반환 buf.배열에 복사된 경로 이름에는 심볼릭 링크인 구성 요소가 포함되지 않습니다.그만큼 크기 인수는 가리키는 문자 배열의 바이트 크기입니다. 버프 논쟁.만약에 버프 널 포인터인 경우 getcwd()의 동작은 지정되지 않습니다.

반환 값

성공적으로 완료되면, getcwd() 반환한다 버프 논쟁.그렇지 않으면, getcwd() 널 포인터를 반환하고 설정합니다. 오류 오류를 나타냅니다.가 가리키는 배열의 내용 버프 그러면 정의되지 않습니다....

다른 팁

그만큼 execv()에 대한 인수는 현재 작업 디렉토리(getcwd()에 의해 반환됨) 또는 쉘 검색 경로(getenv("PATH")에 의해 반환됨)가 아니라 실행하려는 응용 프로그램의 경로입니다.

수행 중인 작업에 따라 하위 수준 exec() 제품군보다 C 라이브러리의 system() 함수에서 더 많은 마일리지를 얻을 수 있습니다.

이것은 ~ 아니다 ANSI C:

#include <unistd.h>

char path[MAXPATHLEN];
getcwd(path, MAXPATHLEN);
printf("pwd -> %s\n", path);

경로가 상대적인 경로가 될 수 있다면 ''를 사용할 수 있어야합니다. 또는 './'경로로.작동할지는 잘 모르겠지만 시도해 볼 수는 있습니다.

저는 전문 프로그래머가 아니기 때문에 정확한 답변은 아닙니다.

당신이 해야 할 일은 환경 변수 PWD(현재 작업 디렉토리)를 가져오는 것입니다.

라이브러리가 무엇인지는 잘 모르겠지만 표준 Linux 헤더입니다.

주변을 둘러보고 찾을 수 있는지 확인해 보겠습니다.

편집하다:

나는 생각하고 있었다,getenv() 시스템 명령을 실행해야 하고 PATH에 있는 다양한 bin 경로가 필요한 경우 도움이 될 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top