mkdir 함수 구현하는데요.. 링크부분에서 에러가 나네요..
#include
#include
#include
#include
#include
#include
int Errors =0;
void mkdirs(char*);
int main(int argc ,char* argv[])
{
if(argc<2){
fprintf(stderr,"mkdir: arg count\n");
exit(2);
}
while(--argc)
mkdirs(*++argv);
exit(Errors?2:0);
}
void mkdirs(char* d)
{
char pname[128],dname[128];
register i, slash=0;
int result;
pname[0]='\0';
for(i=0;d[i];++i)
if(d[i]=='/')
slash =i+1;
if(slash)
strncpy(pname,d,slash);
strcpy(pname+slash,".");
if(access(pname,02)){
fprintf(stderr,"mkdir:cannot access %s\n",pname);
++Errors;
return;
}
result=mknod(d,S_IRWXU,0);
if(result<0){
fprintf(stderr,"mkdir: cannot make directory %s\n",d);
++Errors;
return;
}
chown(d,getuid(),getgid());
strcpy(dname,d);
strcat(dname,"/.");
if((link(d,dname))<0){ /* <-------요부분에서 */
fprintf(stderr,"1 mkdir:cannot link %s\n",dname);
unlink(d);
++Errors;
return;
}
strcat(dname,".");
if((link(pname,dname))<0){
fprintf(stderr,"2 mkdir:cannot link %s\n",dname);
dname[strlen(dname)]='\0';
unlink(dname);
unlink(d);
++Errors;
}
}
<------- 이렇게 주석처리한 부분에서 에러가 나거든요?
이게 디렉토리를 생성하면 . 디렉토리와 .. 디렉토리 를 하드링크 시키는건데
(엄밀하게 말하자면 디렉토리도 파일이지만 지금은 그걸 따지는게 아니니까요..)
왜 에러가 나는지 모르겠어요^^;;;; 초보자인 제게 도움을 주세요~
환경은 ubuntu 입니다.
헤더파일이 안나오네요..;;
stdio.h,stdlib.h,string.h,sys/stat.h,sys/types.h 입니다.
에러코드
에러코드 확인해보시지요.
귀찮으면 perror(); 만 하셔도 됩니다.
OTL
에러메시지가..
에러 메시지가.. Not a directory
라고 나오네요^^;;;;
...
댓글 달기