gpt4 book ai didi

C - 如何将文件从 cifs 挂载到本地硬盘

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:15:49 25 4
gpt4 key购买 nike

当我尝试将文件从 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);
}
}

最佳答案

rename() 仅适用于同一设备,它只是更改其名称(或将名称“移动”到另一个目录)。 rename() 无法将文件数据从一个位置移动到另一个位置。

如果你想复制或移动文件,你需要自己做:

  • 打开源文件和目标文件
  • 从源文件读取(),循环写入目标文件,直到结束。
  • unlink() 源文件(仅当您要移动它时。)

关于C - 如何将文件从 cifs 挂载到本地硬盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18238751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com