在这种情况下哪种操作系统概念应该更好

时间:2016-12-07 11:07:52

标签: c multithreading operating-system semaphore

我正在实施一个C代码,我有这个场景

我有一个二进制文件code,它在执行时会连续写入名为log.txt的文件中。现在我同时打开终端2并再次运行code二进制文件,这将是同时写入log.txt文件

我想阻止这一点。我的逻辑是,当First Binary正在工作并写入文件log.txt时,第二个执行的二进制实例也需要在log.txt上写入但是应该被阻止。我可以实现哪些选项可以实现这个?

我打算在C编程中使用Semaphores。但如果有人有其他选择,请让我知道

1 个答案:

答案 0 :(得分:0)

如果要创建线程,则需要使用信号量或互斥量来保护文件描述符,因为FD与所有线程共享。

另一种方法是fcntl()使用cityTag += [sender.tag!] 来定义和检查文件锁。

如果您想保护文件超出地址空间,您应该使用 struct flock或semaphore,因为互斥量不会超出地址空间。为了您的参考我写了一个应用程序,看看。

struct flock structure