诊断 QDir::rmdir 故障
Diagnosing QDir::rmdir failure
我使用以下代码在 Linux 上删除一个空文件夹:
bool removeFolder (const QString& path)
{
QDir dir(path);
assert(dir.exists());
return dir.rmdir(".");
}
出于某种原因,它有时会返回 false(对于特定文件夹,但这些文件夹似乎没有任何错误)。如果我随后使用 <unistd.h>
中的 ::rmdir 删除同一文件夹,它会成功。 我怎么知道QDir::rmdir
失败的原因?
到目前为止,这在Windows上从未发生过,QDir::rmdir
只是工作。
确认:在 windown 上工作,在 Linux 上失败。
阅读
我尝试只使用完整的绝对路径(QDir::rmdir(absolutePath)),它起作用了;但是,我认为在unistd的rmdir()上使用QDir::rmdir()基本上没有意义,所以从现在开始我将坚持使用unistd rmdir()。
注意:QDir::removeRecursively() 是一个不同的故事:它似乎工作正常,它比通过 opendir() 然后连续 readdir() 的(或 nftw(...FTW_DEPTH...东西)。
我遇到了同样的问题,但在 Windows 上,我无法使用 QDir().rmdir(path);
删除空目录。这发生在一些较旧的硬盘驱动器上,因此可能是古老的文件系统的罪魁祸首。但我发现了一个黑客:
QFile(path).setPermissions(QFile::WriteOther); // this works even for dirs
bool success = QDir().rmdir(path);
当然,如果删除不成功,您应该将权限恢复为原始值,但那是另一回事。
尝试使用这个:
dir.rmdir(dir.absolutePath())
- 分段故障(堆芯转储)矢量
- C++中的动态铸造故障
- 数组的指针从不分段故障
- vscode g++链路故障:体系结构x86_64的未定义符号
- 访问被拒绝后,c++中的故障保护代码
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 调试 CUDA MMU 故障
- Qt:remove() 和 rmdir() 有什么区别
- Geeksforgeeks C 程序故障排除:IEE 754 表示法为十进制
- Arch Linux.AUR 包 mysql 不能用 makepkg 构建.错误:构建 () 中出现故障
- 正在处理故障(堆芯转储)
- 在 Boost::fiber 中引发的BOOST_ASSERT故障 Visual Studio "Debug" 构建
- 如何进行故障排除:未定义对"非虚拟 thunk to ..."的引用
- C++函数过载会导致 SEG 故障
- 分段故障 运行C++代码时出现 SIGSEGV
- 当新的故障时,是否有必要留出一些紧急内存?
- Python & C-C++ 扩展模块案例段故障
- 带升压的 SEG 故障::make_shared / 特征3 内存.h.
- 在 c++ 中,发生故障后是否需要 stream.clear()?
- 诊断 QDir::rmdir 故障