【发布时间】:2015-05-02 22:26:02
【问题描述】:
我有一个 C 语言程序正在将数据写入文件。
C程序在执行过程中不保持打开文件,它只是用(fopen ("myfile.txt","a"))打开文件并写入一些数据然后关闭文件。
另一方面,我有一个脚本文件,它可以使用 C 二进制程序同时对同一个文件执行 2 个操作:
它可以删除文件
-
它可以使用命令向文件中添加一些行
echo "some data" >> file
脚本和 C 二进制程序之间是否存在竞争条件的风险? Linux ioctl 是否可以解决此类问题?
如果存在竞争条件的风险,如何在处理文件之前对 C 和 shell 进行检查?
【问题讨论】:
-
是的,那里有竞争条件。
-
为什么投反对票?这是一个合法的问题。
-
我认为你应该使用数据库而不是文本文件
-
shell 脚本见
man 1 flock,C 程序见man 2 flock