小编apa*_*urn的帖子

Git-Bash for Windows'rm'如何运作?

在某些情况下,rmGit-Bash中的命令会删除在资源管理器,cmd提示符,PowerShell或使用C++标准库调用中无法删除的文件.

为什么?

这让我感到困惑,因为我知道这里没有魔法,我认为它们都使用相同的Win32 API.

例如,我有数据库快照保持打开状态,无法使用所描述的其他方法删除,但Git-Bash已成功删除rm:

资源管理器删除:"由于文件已打开,无法完成操作."

cmd :: del <path>"访问被拒绝"

PS :: Remove-Item -Force -Path <path>"无法删除项目.拒绝访问路径."

C++ remove():返回-1

C++ unlink():返回-1

C++ _unlink():返回-1

git-bash rm <path>:成功

以上可以在不同文件上重复执行.

还有其他锁定文件,git-bash也rm成功删除(我过去使用过它,最近没有使用过,我没有其他具体的例子).

但它并不总是有效:在测试应用程序中,我使用了打开文本文件fopen(),包括Git-Bash在内的所有方法rm都无法成功删除它.

那么,Git-Bash rm如何运作?

c++ powershell git-bash

8
推荐指数
1
解决办法
1088
查看次数

标签 统计

c++ ×1

git-bash ×1

powershell ×1