检查文件是否被 C 中的另一个应用程序打开?

标签 c linux file file-io

我正在尝试编写一个程序来加密一个文件并将结果保存到另一个文件中。作为作业的一部分,我们不允许使用标准 C 库函数,如 fopen()fgets()fscanf()、等写入文件。相反,我们只能使用 Unix 系统调用,如 open()read()write()close() 。但是,我想确保我的输出文件在写入之前没有被另一个应用程序打开。在 C 中有什么工具可以做到这一点吗?

最佳答案

只需使用伪随机文件名并使用 (O_CREATE | O_EXCL) 作为选项打开文件。如果文件已经存在,打开将失败并显示 EEXIST,您可以使用新名称重试。

请注意,这并不保证任何事情,只是降低了可能性。真正的保证将需要文件系统和操作系统特定的方法。

关于检查文件是否被 C 中的另一个应用程序打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26070359/

相关文章:

c - 使用 c : undefined reference to OpenJobObject 进行 Windows api 编程

c - printf 是如何工作的?

c - 在编写干净的 C 代码时利用 ARM 未对齐的内存访问

Linux:信号对多线程的影响

linux - rsync 将源目录嵌套在目标中,就像使用 --files-from 选项时没有尾部斜杠一样

java - 在 Java 中监视文件

perl - 意外的逻辑错误

objective-c - 最新的枚举值是否总是高于第一个枚举值?

c - 在 Linux 上的 C 程序中从套接字描述符获取 struct socket*、struct sock *

C-文本文件写入详细信息