两个程序访问一个文件

two programs accessing one file

这个论坛的新成员 - 看起来很棒! 我有一些处理代码,可以定期从远程设备无线读取数据并将该数据作为字节写入文件,例如data.dat。我想在我的 Mac Mini 上编写一个 Objective C 程序,使用 Xcode 来读取此文件、解析数据,并在数据值指示问题时对数据采取行动。我的问题是:我的两个不同程序可以毫无问题地异步访问同一个文件吗?如果这个 一个问题,您能否建议一种允许这些操作的技术? 谢谢, 凯文·H.

多个进程可以同时读取同一个文件,没有任何问题。一个进程也可以从一个文件读取而另一个进程写入而没有问题,尽管您必须小心确保您读入任何写入的新数据。但是,多个进程不应同时写入 到同一个文件。 OS 会让你这样做,但数据的顺序是未定义的,你会喜欢覆盖数据——一般来说,如果你这样做,你会很糟糕。所以你应该注意确保一次只有一个进程写入一个文件。

保护文件以便一次只有一个进程可以写入的最简单方法是使用 C 函数 flock(),尽管该函数公认有点简陋,可能适合也可能不适合您用例。