【问题标题】:g++ in WSL has created an undeleteable fileWSL 中的 g++ 创建了一个不可删除的文件
【发布时间】:2019-12-14 06:36:11
【问题描述】:

我在 WSL (g++ (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0) 下使用 g++ 将基本 C++ 文件“simple.cpp”编译为可执行文件“simple”。创建此可执行文件后,我无法删除它。

我尝试使用rm -rf simplesudo rm -rf simple 删除,通过 Windows 资源管理器(属性中缺少安全选项卡)和del simple 在提升的命令提示符中删除。有趣的是,sudo rm -rf simple 返回 0,表示成功,但ls -l 显示文件仍然存在,但不可读。即使是sudo ls -l,它也会显示以下内容:

ls: cannot access 'simple': No such file or directory
total 128
-????????? ? ?   ?    ?            ? simple
-rwxrwxrwx 1 seb seb 28 Aug  6 17:25 simple.cpp

尝试 chmod 或 chown 文件也会失败,并显示 cannot access 'simple': No such file or directory

simple.cpp 文件包含非常无害的内容:

int main() {
    return 0;
}

我预计所描述的 4 种方法中的一种会删除该文件,但一切都失败了。

【问题讨论】:

  • rm -rf simple - 为什么使用r(表示递归)参数?这只对目录有意义,simple 是一个文件,而不是一个目录。并不是说它真的很重要,只是为命令指定无意义的参数似乎很奇怪。
  • 如果 Windows 应用程序打开了文件,它可能会阻止删除.. 只是猜测。
  • @JesperJuhl -r 是因为我使用的某些命令将文件报告为目录,所以我想我会通过使用 -r 删除它来删除它作为一个潜在问题,如果它实际上以某种方式变成了一个目录。

标签: c++ gcc windows-subsystem-for-linux


【解决方案1】:

这通常是由于进程具有文件句柄。
您可以尝试终止上述进程,但我建议您重新启动计算机并尝试删除文件

【讨论】:

  • 重新启动它实际上使文件消失了,有趣的是,如果我最初尝试使用 Windows 资源管理器删除文件,则没有问题。
  • 看起来有问题的程序是 Visual Studio Code,因为重新启动该程序会导致文件消失,但似乎也破坏了该文件夹的 Visual Studio Code 中的 WSL。
猜你喜欢
  • 1970-01-01
  • 2010-12-21
  • 1970-01-01
  • 2017-03-28
  • 2021-02-25
  • 2021-05-22
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多