[win] 파일 생성
글쓴이: 나는오리 / 작성시간: 수, 2006/02/01 - 4:26오후
C:\abc\abcd\란 폴더에서 A라는 프로그램이 있고
이 프로그램을 실행시 파일 생성 루틴을 지나게 됩니다.
파일을 생성할 때 fopen을 사용하는데
fopen("ABCD.TXT", "wb");라고 한것과 fopen("c:\\abc\\abcd\\ABCD.TXT", "wb");와 차이가 있습니까?
전자로하면 생성이 안되는데 후자로하면 생성이 됩니다.
현재 상황을 설명드리자면 A라는 프로그램은 B라는 프로그램에서 실행시켜줍니다.
즉, B실행 -> (B가)A실행 -> A에서 "ABCD.TXT"파일 생성
절대경로를 지정하지 않으면 실행파일 위치에 파일을 생성하게 되는데
이상하게도 위와 같이 절대경로를 지정하지 않으면 생성이 안되는 문제가 있습니다.
그런데 이녀석이 골때리는건 A프로그램을 직접 실행시키면 "ABCD.TXT"라는 파일이 생성된다는 겁니다.
환경은 VC 6.0입니다.
추가
파일 생성 루틴을 타기전에 파일이 생성되어 있는지 체크합니다.
체크방법은
fileok = fopen("ABCD.TXT","r");
입니다.
아무래도 체크방법에 문제가 있는것 같은데
_access대신 fopen으로 체크한건 소스를 받아서 쓰는거라
여러곳을 수정하기 싫어서 그냥 그대로 이용했는데 ㅠ.ㅠ
현재 울고싶은 상황입니다.
Forums:
절대 경로를 지정하지 않으면 현재 디렉토리에 저장하지 않나요?B가
절대 경로를 지정하지 않으면 현재 디렉토리에 저장하지 않나요?
B가 A를 실행시킨 상황에서
fopen("ABCD.TXT", "wb"); 하기 전에 A프로그램의 현재 디렉토리를 확인해 보는게 좋을 것 같네요..
[quote="kimkh0304"]절대 경로를 지정하지 않으면 현재 디렉
로그를 만들어서보니 그냥 지나가버리네요. -_-;
A프로그램의 현재 위치는 당연히 "C:\abc\abcd"로 나올텐데요.
혹시나 모르니 이것부터 해봐야겠네요.
머리로 생각하는것과 실제는 다를 수 있으니까요. ^^;
A프로그램을 수정할수 있다면.. GetCurrentDirectory 함수
A프로그램을 수정할수 있다면.. GetCurrentDirectory 함수로 알수 있습니다..
만약 B가 A를 system함수로 실행시켰다면
A의 기본 작업 디렉토리는 B의 작업 디렉토리가 되네요..
[quote="kimkh0304"]A프로그램을 수정할수 있다면.. Get
윗글 쓰고 확인해보러 갔다가 지금 왔습니다. ㅡ.ㅡ;
이 잡것(?)이 C:\Program Files\ 아래의 외부 프로그램의 실행파일이 있는곳을 잡고있더군요.
B프로그램을 C프로그램(외부 프로그램)에서 호출하는데
이것때문에 C:\Program Files\ 아래를 잡고있는가 봅니다.
우찌 이런일이 가능한지...
[quote="욕심많은오리"]이 잡것(?)이 C:\Program Fi
MSDN 에서 CreateProcess 를 찾아보시면 lpCurrentDirectory 파라미터에 대해 다음과 같이 쓰여 있습니다.
즐겁게 살아 볼까나~*
댓글 달기