我正在使用C制作一个基本的文本编辑器,它可以打开、编辑和保存文件。但是我需要帮助来实现我一直在处理的文件的咨询锁定;你好.txt"。现在,当我对文件进行操作时,比如编辑或删除内容,我需要程序警告用户该文件当前已打开,并且已被进程使用。虽然它不是一个硬锁,但即使在发出警告后,用户也可以选择编辑它。
此外,如果有人能帮助shell脚本测试这个程序或指导我朝着正确的方向前进,我将不胜感激。
您可以采用几种途径之一来实现文件的警告/软锁定。
- 使用POSIX"flock"系统调用,Ir
- 使用锁定文件
大多数编辑器(vim、emacs(使用第二种方法,并利用锁定文件保存未提交的修改。然而,考虑到OP正在构建一个简单的编辑器,这似乎有些过头了。
要实现软锁定,编辑器应在启动时执行以下操作:
- 发布非阻塞独占锁
- 如果未授予-警告用户并发编辑
- 将独占锁替换为共享锁
当编辑会话终止时:
- 解锁文件
强调:这两种解决方案都不可能检测到其他程序/编辑器何时打开文本文件。