[완료] 리눅스의 쉘 구현하는 중 질문입니다.

ddangkyoung의 이미지

쉘에서 파일의 Remove와 Recovery를 구현하려고합니다.

int sign = rename("/mnt/hgfs/input.txt", "/recycle/remove.txt");
이런식으로 해서 input.txt파일을 recycle 폴더로 이름을 remove로 바꿔서 옮기려고 했는데요

Invalid cross-device link
요런 에러가 뜨네요.

검색해봐도 뭔지를 잘 모르겟습니다;'
도와주세요

SoulreaveR의 이미지

........
에러
EISDIR newpath는기존 디렉토리이지만, oldpath는디렉토리가 아니다.

EXDEV oldpath와newpath 는 동일한 파일시스템 상에 있지 않는다.

ENOTEMPTY or EEXIST
newpath 는 빈 디렉토리가 아니다. 예를 들어 .와 .. 이상의 내용들을 갖
고 있다.
...........

ddangkyoung의 이미지

/mnt/hgfs라는 폴더가 존재합니다
그 안에 input.txt 파일도 존재하고요

/recycle이라는 폴더도 존재합니다
물론 그안에는 아무것도 들어있지 않고요

원인을 모르겟네요;

mirr187의 이미지

rename은 기본적으로 동일한 device에서만 처리되는 명령어입니다...
발생하는 에러 그대로 서로 다른 device에 대해 rename을 처리했기 때문에 발생하는 에러입니다.

위와 같은 경우 rename 대신에 mv로 처리하시는게 옳은 경우입니다...

ddangkyoung의 이미지

아무래도 원인이
리눅스를 vmware로 돌리고
윈도우와 공유폴더를 만들어서
그 안의 파일을 이용해 rename한게 원인인 것 같네요.
리눅스의 다른 폴더에 파일을 만들고 하니
잘됩니다.

결국 공유폴더로하면 안되는 것인가....OTL