gpt4 book ai didi

linux - rm 最后有 & 符号和没有

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:46 26 4
gpt4 key购买 nike

这是我被问到的一个面试问题。

假设您有一个大型脚本文件,用于编译和清理目的。还假设您在该文件的同一目录中有一个名为 folder 的文件夹。此外,在此文件的末尾,您还有以下代码行:

clean:
rm -r -f folder &

当您尝试清理项目时,假设它工作正常。但是,如果我们删除 & 符号并这样写:

clean:
rm -r -f folder

然后在您尝试清理后,您将收到以下错误:

rm: cannot remove 'folder': Directory not empty

但是如果您再尝试清理一次,文件夹将根据需要进行清理。

我需要找到所有可能的原因,为什么会发生这种情况。我唯一能想到的是,如果我们在运行这个脚本的几个线程之间进行一些竞争。然后有人问我——“如果只有一个线程运行代码怎么办?”
我没有看到这个问题怎么会发生在一个线程上——但似乎我弄错了,我也不知道为什么。 还有哪些情况会导致上述错误?

编辑:在采访中,我还可以假设以下内容:
(1).在脚本文件的其他地方没有&符号,但是我写的rm代码行。
(2).执行 rm 时,文件夹 中未创建新文件

最佳答案

我很高兴这是一个虚构的问题。在 makefile 中以这种方式使用 & 完全是伪造的;希望现实世界中没有人这样做。

无论如何,在典型的面试场景中,您需要猜测面试官在他们的脚本中给出的答案。问题很可能被错误描述,至少在你的问题中是这样(如果在采访中也出现了错误的场景,这也很正常)。如果错误消息出现在 & 出现并且您运行 make clean all 时,这个问题在理论上是有意义的。然后,新构建会创建防止删除目录的文件。这就是您不应在 makefile 配方中使用 & 的原因。

关于linux - rm 最后有 & 符号和没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45321825/

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