在C中进行文件锁定和解锁,并编写shell脚本进行测试



我正在使用C制作一个基本的文本编辑器,它可以打开、编辑和保存文件。但是我需要帮助来实现我一直在处理的文件的咨询锁定;你好.txt"。现在,当我对文件进行操作时,比如编辑或删除内容,我需要程序警告用户该文件当前已打开,并且已被进程使用。虽然它不是一个硬锁,但即使在发出警告后,用户也可以选择编辑它。

此外,如果有人能帮助shell脚本测试这个程序或指导我朝着正确的方向前进,我将不胜感激。

注意:这个答案只适用于Linux系统。

您可以采用几种途径之一来实现文件的警告/软锁定。

  1. 使用POSIX"flock"系统调用,Ir
  2. 使用锁定文件

大多数编辑器(vim、emacs(使用第二种方法,并利用锁定文件保存未提交的修改。然而,考虑到OP正在构建一个简单的编辑器,这似乎有些过头了。

要实现软锁定,编辑器应在启动时执行以下操作:

  1. 发布非阻塞独占锁
  2. 如果未授予-警告用户并发编辑
  3. 将独占锁替换为共享锁

当编辑会话终止时:

  1. 解锁文件

强调:这两种解决方案都不可能检测到其他程序/编辑器何时打开文本文件。

最新更新