프로그램이 실행되고 있는 위치를 알려면???
글쓴이: zeshai / 작성시간: 일, 2003/10/05 - 6:43오후
어떤 프로그램을 절대 경로로도 실행 할 수 있고,
직접 디렉토리까지 가서 ./A 이렇게 실행할 수도 있는데...
문제는 A라는 프로그램이 자신의 디렉토리 밑에 있는 data 라는 디렉토리밑에
여러 파일을 써야합니다.
char* getcwd(char* buf, size_t size)를 사용하니깐,
실행시킨 위치가 뜨는군요. 뭐 이것이 작업 디렉토리겠죠.
그러면 A라는 프로그램이 있는 절대 경로를 알아올수 있는 방법은 없습니까?
글을 검색해보니 /proc/(PID)/exe 파일이 심볼릭 링크 되어있긴 하던데...
저 이름을 읽어오려니... 링크된 실체의 경로를 어떻게 읽어야하나요?
예를 들어 /proc/(PID)/exe -> /home/zeshai/A 라면요...
/home/zeshai를 뽑아오고 싶은데... ^^;
Forums:
proc 을 사용하지 않고 하려면,main의 argv[0] 값을
proc 을 사용하지 않고 하려면,
main의 argv[0] 값을 dirname, basename 등으로 잘 처리해보시면 구할 수 있습니다.
---
http://coolengineer.com
윗 분이 답변한 대로 하시고,만약 디렉토리 패스가 전혀없을 경우에는
윗 분이 답변한 대로 하시고,
만약 디렉토리 패스가 전혀없을 경우에는 추가적으로
PATH 환경변수를 검색하는 루틴도 추가 하셔야 완벽합니다.
./progname
제목과 같은 형태로 실행하면
argv[0]에 "./progname" 이런 형태로 값이 들어 가 있지 않나요??
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
그렇군요... 제가 잠시 착각했습니다.Script를 실행시킬 때, 항
그렇군요... 제가 잠시 착각했습니다.
Script를 실행시킬 때, 항상 PATH를 찾게하지 않고 직접 실행시키다보니... 비슷한 c library 함수를 가지고 혼동하였나봅니다.
neohwang 님 말을 잘 보태어 정리하면,
잘 생각해보니 argv[0] 에 "/" (path 구분자)가 들어가 있는 경우에만 가능하군요.
또 절대경로인경우에는 되지만 상대경로인 경우에는 현재 디렉토리를 붙여야하는 추가적인 작업이 필요하네요.
"/"가 없는 경우에는 환경변수 PATH를 찾아 일일이 실행파일로 존재하는지 찾아야할 것 같습니다.
감사합니다...
---
http://coolengineer.com
저도 질문을 보고 이래저래 고민을 해봤는데/proc를 검색할 것이 아
저도 질문을 보고 이래저래 고민을 해봤는데
/proc를 검색할 것이 아니라면
환경변수가 가장 깔끔한 방법이라고 생각 되네요
그러나
ps -ef f 나 lsof 의 경우는 /proc를 검색을 해서
절대 경로를 얻네요.
ps. 환경 변수로 하신다면.
환경변수의 유무와, 그 경로가 타당한지를
체크하는 부분을 넣어야 좀더 안전한 프로그램이 되겠네요.
ps2. 인자로 넣어 주어도 좋을것 같군요.
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
댓글 달기