我正在实施一个C代码,我有这个场景
我有一个二进制文件code
,它在执行时会连续写入名为log.txt
的文件中。现在我同时打开终端2并再次运行code
二进制文件,这将是同时写入log.txt文件
我想阻止这一点。我的逻辑是,当First Binary正在工作并写入文件log.txt时,第二个执行的二进制实例也需要在log.txt上写入但是应该被阻止。我可以实现哪些选项可以实现这个?
我打算在C编程中使用Semaphores。但如果有人有其他选择,请让我知道
答案 0 :(得分:0)
如果要创建线程,则需要使用信号量或互斥量来保护文件描述符,因为FD与所有线程共享。
另一种方法是fcntl()使用cityTag += [sender.tag!]
来定义和检查文件锁。
如果您想保护文件超出地址空间,您应该使用 struct flock或semaphore,因为互斥量不会超出地址空间。为了您的参考我写了一个应用程序,看看。
struct flock structure