当前位置: 首页 > 面试题库 >

是否named()是原子的?

屠泰平
2023-03-14
问题内容

我无法通过实验进行检查,也无法从手册页中收集到它。

说我有两个过程,一个是将文件1从目录1移动(重命名)到目录2。假设正在运行的另一个进程同时将directory1和directory2的内容复制到另一个位置。复制是否可能以这种方式发生,即目录1和目录2都将显示文件1-即,目录1在移动之前被复制,目录2在移动之后被第一个进程复制。

基本上,rename()是原子系统调用吗?

谢谢


问题答案:

是的,没有。

假设操作系统不会崩溃,rename()是原子的。它不能被任何其他文件系统操作分割。

如果系统崩溃,您可能会看到ln()操作。

还要注意,在网络文件系统上操作时,如果操作成功完成,您可能会收到ENOENT。本地文件系统无法做到这一点。



 类似资料:
  • 问题内容: 不先打电话就可以安全吗? 我希望路径始终指向完整的文件。我主要关心 Ext4 。是否可以在所有将来的Linux内核版本中都保证named()是安全的? Python中的用法示例: 问题答案: 没有。 查看libeatmydata,以及此演示文稿: 吃我的数据:每个人如何获取文件IO错误 http://www.oscon.com/oscon2008/public/schedule/det

  • 问题内容: 参考以下链接:http : //docs.python.org/faq/library.html#what- kinds-of-global-value-mutation-are-thread- safe 我想知道以下情况: 在cPython中将保证是原子的。(x和y都是python变量) 问题答案: 让我们来看看: 它不会出现,他们是原子:x的和y的值可以被另一个线程之间改变字节码,

  • 问题内容: 是原子的吗? 分配对象引用应该是,但是我不确定。 谢谢。 问题答案: 是的 。在Java中,所有引用分配都是原子的。 只需注意,这样的复合语句不是原子的,因为它包含一个对象创建和一个单独的赋值。 另请注意,来自JLS-17.7的 “对long和double变量的分配可能不是原子的”

  • 问题内容: 在Objective-C中,您可以区分原子性质和非原子性质: 根据我的理解,您可以安全地从多个线程读取和写入定义为原子的属性,而同时从多个线程中写入和访问非原子属性或ivars可能导致不确定的行为,包括严重的访问错误。 因此,如果您在Swift中有这样的变量: 我可以安全地并行读写该变量吗?(不考虑这样做的实际含义)。 问题答案: 假设尚无底层文档,这还为时尚早,但是您可以从汇编中学习

  • 有人能告诉我下面的例子是否违反了LSP吗? 我有一个例子: 和子类: 和主类: 在此示例中,子类添加名为 的新属性,并通过对其自己的属性 进行附加检查来覆盖方法。 在main方法中,我创建了2个对象。第一个是类型的对象,第二个是类型的对象。 当验证人员时,因为所有前提条件都是正确的,所以它是正确的,但是对于员工,它将抛出< code > IllegalArgumentException ,因为它与

  • 问题内容: 我知道没有锁定的C ++中增量操作不是原子的。 JVM会在其指令执行中添加任何锁吗? 问题答案: 不,这不对 检索c的当前值。 将检索到的值增加1。 将增加的值存储回c中。 原子性和线程干扰的Java文档 您需要使用关键字或使用方法来确保线程安全。 更新 : 要么