首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VS2015从windows程序中删除linux上的文件

VS2015从windows程序中删除linux上的文件
EN

Stack Overflow用户
提问于 2016-04-05 14:51:45
回答 2查看 68关注 0票数 0

我们在windows上有一个服务器,但是它有一个网络驱动器,实际上是在linux服务器上。该程序必须删除同名(信号)相同位置的文件,当这些文件位于本地驱动器上时,它工作正常,但在网络驱动器上运行时,它有时不会删除该文件,更糟糕的是,函数将返回一切正常(意味着文件被删除)。我试过用remove_unlinkDeleteFileA,这个问题仍然存在,有时完全是随机的,它不会被删除,它会保持这样。

代码非常简单:

代码语言:javascript
复制
bool File::Delete()
{
   if(isFile() && exist())
   {
        return DeleteFileA(filename.c_str()) != 0 ? true : false;
   }
   else 
       return false;
}

这将始终返回true,即使该文件未被删除,如果它没有权限,它应该失败(并且每次失败,而不是随机),有人能给我一个想法吗?我没有别的选择了

编辑:由于@阶段,似乎moveFile实际上检测到了一个错误,因此在删除之前重命名可以检测到"ERROR_FILE_NOT_FOUND“问题。

其他事情:这个随机问题只有在从linux服务器创建文件时才会发生。如果我从窗口创建它们,它们将永远被删除。更多的是:如果我有一个程序无法删除的文件,并且在Windows旁边创建另一个文件,程序将检测并删除以前无法删除的文件。

Edit2:更接近于回答: linux中的文件名testTEST是不同的,而在中是一样的。当情况不匹配时,这个问题似乎是随机出现的。但我不确定因为它太随意了。

EN

回答 2

Stack Overflow用户

发布于 2016-04-05 16:32:03

我认为问题在于Linux上的Samba服务,它为Windows实现了SMB协议。DeleteFile函数只是请求SMB服务器(服务器服务)删除一个文件。成功是由Samba返回的。

票数 2
EN

Stack Overflow用户

发布于 2016-04-06 09:31:11

也许您应该尝试更高的级别,比如boost文件系统,或者std::实验性::文件系统::删除

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36429845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档