如何以编程方式确定“写入”系统调用对特定文件是否是原子的?

2023-12-06

在某些情况下,编码器不能依赖系统调用是原子的,例如如果文件位于 NFS 文件系统上。 (参见NFS 概述、常见问题解答和 HOWTO 文档)。但大多数数据库工作最终都需要原子系统调用。 (参见数据库系统的原子性).

是否有一种标准(且独立于操作系统)方法来确认 C(或 python)中特定文件的写入(和其他系统调用)是原子的。

有什么建议么?

后续注释:管道上的原子性将在下面讨论:

  • unix管道多个作家
  • 如果两个不同的进程同时对同一文件调用写入系统调用,会发生什么情况

请特别注意专门处理 O_APPEND 的“man”页面摘录:

如果文件状态标志的 O_APPEND 标志被设置,则文件 偏移量应在每次写入之前设置为文件末尾,并且不 干预文件修改操作应在更改之间发生 文件偏移量和写操作。


The writePOSIX 中定义的调用根本没有原子性保证。所以你不需要确认任何事情,它不是原子的。

如果成功完成,它甚至不保证数据将到达硬盘驱动器(如果有驱动器的话)。成功读回数据也不能为您提供任何保证。

您需要使用sync系列函数以获得一些持久性保证。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以编程方式确定“写入”系统调用对特定文件是否是原子的? 的相关文章

  • 按字段名称对命名元组列表进行排序的 Pythonic 方法

    我想对命名元组列表进行排序 而不必记住字段名的索引 我的解决方案看起来相当尴尬 希望有人能有一个更优雅的解决方案 from operator import itemgetter from collections import namedtu
  • 修改正在运行的可执行文件的资源内容

    All 我将应用程序设置存储在资源中 当我的程序首次加载时 我使用 WinAPI 读取指定的资源 然后我解析检索到的字节数据 这对我来说完美无缺 现在假设用户更改了我的应用程序中的设置 他 她检查复选框控件 我想将更新的设置保存到我的资源中
  • 图像堆栈的最大强度投影

    我正在尝试重新创建该功能 max array 3 来自 MatLab 它可以获取 N 个图像的 300x300px 图像堆栈 我在这里说 图像 因为我正在处理图像 实际上这只是一个大的双数组 300x300xN 并创建一个 300x300
  • 为什么我无法调试动态加载的程序集?

    我正在开发一个 Web API 项目 该项目使用内部模拟框架 允许拦截和修改来自控制器的响应 它使用 MEF 加载包含某些先决条件匹配时执行的代码的程序集 我知道这是正常工作的 因为我可以在响应中看到模拟已被执行 但由于某种原因我无法调试动
  • C 中的链表数组:初始化和插入?

    我需要创建一个链表数组 如图所示 这就是我到目前为止所做的 typedef struct Node int data struct Node next Node int main void Node link 5 for int q 0 q
  • 从视图模型调用方法的命令

    好吧 我倾向于避免使用命令 因为它们总是让我感到困惑 但我正在进行一个新项目 并且正在尝试正确构建它 并且在我看来没有任何代码隐藏 基本上我现在想做的就是连接一个按钮来触发一个命令 在我的视图模型上执行一些操作 但不知何故 如此简单的事情仍
  • 监控单个文件

    我需要监控 使用watchdog http pythonhosted org watchdog index html 单个文件 而不是整个目录 避免监视整个目录的最佳方法是什么 我想this http pythonhosted org wa
  • Python unittest - 与assertRaises相反?

    我想编写一个测试来确定在给定情况下不会引发异常 测试是否有异常很简单is上调 sInvalidPath AlwaysSuppliesAnInvalidPath self assertRaises PathIsNotAValidOne MyO
  • import numpy 和 import numpy as np 之间的区别

    我明白 如果可能的话 应该使用 import numpy as np 这有助于避免由于命名空间引起的任何冲突 但我注意到虽然下面的命令有效 import numpy f2py as myf2py 以下不 import numpy as np
  • 仅对某些行的不同大小的两个 pandas 数据帧的列进行求和

    我有两个 pandas 数据框 如下所示 df1 n column1 0 5 0 0 0 1 6 0 0 0 2 7 0 0 0 3 8 0 0 0 4 9 0 0 0 5 10 0 0 0 df2 n column2 0 6 0 1 0
  • C++ 联合数组和变量?

    在C 中没有办法做这样的事情吗 union Scalar x y Scalar v 2 Where x v 0 and y v 1 既然您使用的是 C 而不是 C 并且它们具有相同的类型 为什么不直接将 x 设为对 v 0 的引用 将 y
  • Tornado websocket handler , self.close() 正在关闭连接而不触发 on_close() 方法

    我是 python stackoverflow tornado 的新手 所以请耐心等待 纠正我 我正在使用龙卷风开发实时应用程序 当我在 Websocket 处理程序类中调用 self close 时 on close 方法不会启动 这次我
  • 如何组合||条件语句中的运算符[重复]

    这个问题在这里已经有答案了 代替 if foo 1 foo 5 foo 9 我喜欢将它们组合起来 类似于以下内容 这不起作用 if foo 1 5 9 那可能吗 不幸的是不是 你最好的选择是创建一个扩展方法 public static bo
  • Gridview 错误:对 Bind 的调用格式不正确

    我有以下 gridview 代码
  • Beautiful Soup 获取动态表数据

    我有以下代码 url https www basketball reference com leagues NBA 2017 standings html all expanded standings html urlopen url so
  • C# 3.0 中自动属性和公共字段的区别

    我无法理解为什么 C 3 0 中存在自动实现的属性语言功能 当你说的时候有什么区别 public string FirstName than public string FirstName get set 因为它们在生成的 IL 代码 和机
  • 检测图像是否损坏或损坏

    我需要以编程方式检查用户在我的应用程序上选择作为壁纸的图像是否已损坏或损坏 基本上我为用户提供了选择自己的图像作为壁纸的选项 现在 当图像加载时 我只想检查它是否已损坏 如果您正在寻找 PHP 解决方案而不是 javascript 解决方案
  • python 函数返回 javascript date.getTime()

    我正在尝试创建一个简单的 python 函数 它将返回与 javascript 相同的值new Date getTime 方法 如所写here http www w3schools com js js dates asp javascrip
  • 使用 Pandas 和 Group By 绘制堆叠直方图

    我正在使用如下所示的数据集 Gender Height Width Male 23 4 4 4 Female 45 4 4 5 我想可视化高度和宽度的堆叠直方图 我希望每个图有两个堆叠的直方图 每个性别一个 这是文档中的堆叠直方图 如果存在
  • Tensorflow ctc_loss_calculator:找不到有效路径

    当运行我的神经网络 双向 LSTM 进行音频识别时 我使用连接主义时间分类 CTC 但在某些时候 训练网络时我几乎每批都会收到来自 Tensorflow 的警告 W tensorflow core util ctc ctc loss cal

随机推荐

  • 将进程 ID 添加到 log4cxx 中的日志文件名中

    在 log4net 中 我可以轻松地将进程 ID 设置为从配置中轻松记录文件名
  • 无循环求和

    I have following double summation 10 i 1 i j 1 i 5 10 j i 我对这个练习很迷茫 我尝试了下面的代码 但尽管给了我一个数字 但它返回了一个错误 很确定它不正确 任何帮助都非常有价值 i
  • 如何获取 Facebook 视频的观看次数

    我首先使用 facebook graph api 获取全局视频视图 然后我想尝试单独的视频视图 但是当我尝试以下语法时 获取 v2 5 object id insights page video views 我得到这个答案 data pag
  • 用于命名空间扩展的图标覆盖处理程序

    我正在开发命名空间扩展 它提供服务器上文件的虚拟视图 在此视图中 我需要使用覆盖图标提供文件的不同状态 正在使用 离线 不同步等 我阅读了实现覆盖处理程序的文章 并认为我将尝试在我们的覆盖处理程序之一中处理此问题 该处理程序实现 IShel
  • 如何使用Cookie检查用户是否已经登录?

    我想知道如何检测用户是否已经登录 使用cookie 我没有使用任何登录控件 我有一个数据库可以检查 ID 和 PWD 另请告诉我是否可以在不使用 cookie 的情况下完成 任何代码或链接都会有帮助 网络配置
  • Android 下拉颜色选择器

    我想创建一个下拉颜色选择器 如下所示 抱歉图像丑陋 我只需要一些颜色 比方说 6 种 所以我不需要完整的颜色选择器 下拉菜单就可以正常工作 我知道我必须扩展 Spinner 的阵列适配器并覆盖获取下拉视图 and getView 我不知道的
  • 如何从一个文件中读取随机行?

    有内置方法可以做到这一点吗 如果不是 我怎样才能在不花费太多开销的情况下做到这一点 不是内置的 而是算法R 3 4 2 Waterman 的 Reservoir Algorithm 来自 Knuth 的 计算机编程的艺术 很好 非常简化的版
  • 如何从父子表中获取结果

    Work on SQL服务器 我的表结构如下 CREATE TABLE dbo AgentInfo AgentID int NOT NULL ParentID int NULL CONSTRAINT PK AgentInfo PRIMARY
  • 运行命令、流式传输 stdout/stderr 并捕获结果

    我正在尝试使用std process Command运行命令并流式传输其 stdout 和 stderr 同时捕获 stdout stderr 的副本 我发现我可以使用spawn 此代码将捕获输出 但不会在发生时将其流式传输到 stdout
  • 如何修复“没有名为‘app_one’的模块”

    我有一个具有以下结构的 Python 包 gt python package package root directory gt app one subpackage directory gt init py gt views py gt
  • Adobe Air:在不同应用程序之间更改焦点时滚动条会抛出错误

    TypeError Error 1009 Cannot access a property or method of a null object reference at spark components Scroller focusInH
  • 如何平滑 CamShift 中的跟踪

    我正在使用 OpenCV 库函数进行手头跟踪项目 通过使用Camshift 我可以跟踪我的手 但它不稳定 即使我使我的手稳定 跟踪也几乎没有移动 所以我无法在正确的位置执行鼠标单击操作 有人请帮我解决这个问题 void TrackingOb
  • 复制时的 PouchDB/CouchDB 序列计数器

    I am live将新创建的 pouchdb 3 3 1 同步到已建立的 iris couchdb 初始复制成功发生 pause事件被触发 If I do info 在本地 我得到的 update seq 为362 如果我做info 在遥控
  • 如何将c++与字边界匹配

    我想将单词 c 与 Python 3 中的单词边界匹配 但我的猜测是 b 也会在加号上触发 为了清楚起见 我已简化为以下测试用例 bc b 我希望我可以保留单词边界 但以某种方式更改其设置 原因是我想将正则表达式放在 TfidfVector
  • 点语法和方括号语法有什么区别?

    我正在经历一些 Objective C 的演练 其中很多地方都让我大吃一惊 我很想把他们打倒 消息发送和方法调用有本质区别吗 Objective C 让我可以同时完成这两件事 object message产生相同的结果 object mes
  • 如何使用 MediaCodec、MediaExtractor 或 MediaMetadataRetriever 确定视频文件的帧速率?

    如何提取录制视频文件的帧速率 我知道有 MediaFormat KEY FRAME RATE 并且我可以通过 MediaExtractor 访问 MediaFormat 对象 但是 KEY FRAME RATE 仅适用于编码器 相反 我想找
  • 将自定义按钮与 Inno Setup 取消按钮对齐

    我在设置与顶部尺寸相同的按钮时遇到问题Cancel我使用时按钮WizardSizePercent 150 in the Setup部分 这是我的代码 AboutButton TNewButton Create WizardForm Abou
  • 在不同情况下与其他单位相比,百分比的真正作用如何

    所以基本上我最近一直在尝试 CSS 并且发现了一些对我来说似乎很新的东西 在设置元素的填充时 我通常使用 em 或 px 等单位 但这次我尝试使用百分比 令我惊讶的是它的工作方式与其他单位非常不同 所以我设置了三种不同的情况 body ma
  • 如何在 Python 中声明数组并将其添加到数组中

    我正在尝试将项目添加到Python 中的数组中 I run array 然后 我尝试通过执行以下操作向该数组添加一些内容 array append valueToBeInserted 似乎没有一个 append方法用于此 如何将项目添加到数
  • 如何以编程方式确定“写入”系统调用对特定文件是否是原子的?

    在某些情况下 编码器不能依赖系统调用是原子的 例如如果文件位于 NFS 文件系统上 参见NFS 概述 常见问题解答和 HOWTO 文档 但大多数数据库工作最终都需要原子系统调用 参见数据库系统的原子性 是否有一种标准 且独立于操作系统 方法