마운트 직후 언마운트 수행 프로그램에서 device is busy error.
글쓴이: you / 작성시간: 수, 2003/07/30 - 3:28오후
안녕하신지요?
제가 짜고 있는 프로그램은
마운트 후에 마운트포인트에 파일과 디렉토리를 만든다음
언마운트 해서 그 마운트포인트에 파일,dir이 존재하지 않는지?
그러고 다시 마운트해서 그 지점에 파일, dir이 존재하는지?
를 알아보는 프로그램인데요
일단 마운트 후에 파일, dir을 만든 후에
언마운트 부분에서
device is busy
에러가 나면서 언마운트가 실패하네요...
이경우는 현재 프로세스가 마운트포인트 내에 있을경우가 그렇지 않나요?
자식 프로세스는 현재 프로그램이 있는 디렉토리에 있지않나요?
거참...모르겠네요...
아시는분 부탁드립니다.
int mount_test1(char *dev, char *mntp, char *mpath, char *upath) { pid_t pid; char *file="/mnt/floppy/mnt_test", *dir="/mnt/floppy/mnt_dir"; //마운트 후에 마운트포인트에 파일과 디렉토리를 만듬 if((pid=fork())<0) fprintf(stderr, "error: fork\n"); else if(pid==0){ if(run_mount(dev, mntp, mpath)!=0){ fprintf(stderr, "error: run_cc_mount\n"); exit(MOUNTERR); } } if(waitpid(pid, NULL, 0)<0) fprintf(stderr, "error: wait\n"); if(cc_touch(file, dir)<0){//파일과 디렉토리 생성 fprintf(stderr, "error: file creation\n"); exit(-1); } else fprintf(stdout, "file and directory created\n"); //언마운트 해서 그 마운트포인트에 파일,dir이 존재하지 않는지? if((pid=fork())<0) fprintf(stderr, "error: fork\n"); else if(pid==0){ if(run_umount(mntp, upath)!=0){ fprintf(stderr, "error: run_umount\n"); exit(UMOUNTERR); } } if(waitpid(pid, NULL, 0)<0) fprintf(stderr, "error: wait\n"); if(n_check(file, dir)<0){//파일, dir이 존재하지 않는지 검사 fprintf(stderr, "error: n_check\n"); exit(UEXISTERR); } else fprintf(stdout, "umount success: file and dir not exist\n"); //다시 마운트해서 그 지점에 파일, dir이 존재하는지? if((pid=fork())<0) fprintf(stderr, "error: fork\n"); else if(pid==0){ if(run_mount(dev, mntp, mpath)!=0){ fprintf(stderr, "error: run_cc_mount\n"); exit(MOUNTERR); } } if(waitpid(pid, NULL, 0)<0) fprintf(stderr, "error: wait\n"); if(e_check(file, dir)<0){ fprintf(stderr, "error: e_check\n"); exit(MEXISTERR); } else fprintf(stdout, "mount success: file and dir do exist\n"); }
Forums:
프로세스마다 pwd(present working directory) 정보
프로세스마다 pwd(present working directory) 정보를 가지고 있는데,
부모프로세스로부터 상속받게 됩니다.
실행프로그램의 위치와는 아무 관계가 없습니다.
의심나는 프로세스에서 getcwd 를 호출해보시기 바랍니다.
댓글 달기