当我尝试将文件从 cifs 挂载重命名到本地路径(将文件从服务器移动到本地硬盘)时,我得到 -1。我可以删除文件,也可以添加新文件,只是不能使用 rename() 函数来完成。该程序以 root 身份运行,并且 cifs 挂载中的用户对共享和服务器上的本地文件系统具有完全权限。
服务器:Windows XP SP3 x32
本地:Ubuntu 13.04 x64
smb 挂载:
sudo mount -t cifs -o username=admin_account,password=<passw> \
//server/share /local/mount/point
C代码:
void
function moveFile(char *fname){
char *base;
base = basename(fname);
char newF[strlen(getSaveDir()) + strlen(base)];
sprintf(newF,"%s%s", getSaveDir(), base);
int result;
result = rename(fname, newF);
if( result == 0 ) {
printf("Moved file: %s to %s", fname, newF);
} else {
printf("There was an error moving %s to %s (ID: %d)", fname, newF, result);
//TODO figure out better fix than this
remove(fname);
}
}