C 中的文件锁定和解锁,并编写 shell 脚本进行测试
File locking and unlocking in C, and writing shell script to test the same
我正在使用 C 制作一个基本的文本编辑器,它可以打开、编辑和保存文件。但是我需要帮助来实现我一直在处理的文件的建议锁定。例如。假设我使用名为“Hello.txt”的程序创建了一个文件。现在,当我对文件进行操作时,比如编辑或删除内容,我需要程序警告用户文件当前已打开并且已经被进程使用。虽然它不会是硬锁,但即使在警告之后用户也可以选择编辑它。
此外,如果有人可以帮助 shell 脚本来测试此程序或指导我正确的方向,将不胜感激。
注意:此答案仅适用于 Linux 系统。
您可以采用几种方法之一来实施 warning/soft 文件锁定。
- 使用POSIX 'flock'系统调用,Ir
- 使用锁定文件。
大多数编辑器(vim、emacs)使用第二种方法,并利用锁定文件来保存未提交的修改。但是,考虑到 OP 正在构建一个简单的编辑器,这似乎有点矫枉过正。
要实现软锁定,编辑器应在启动时执行以下操作:
- 发布非阻塞排他锁
- 如果未授予 - 警告用户并发编辑
- 用共享锁替换独占锁
当编辑会话终止时:
- 解锁文件
强调一下:这些解决方案都不太可能检测到文本文件何时被其他人打开programs/editors。
我正在使用 C 制作一个基本的文本编辑器,它可以打开、编辑和保存文件。但是我需要帮助来实现我一直在处理的文件的建议锁定。例如。假设我使用名为“Hello.txt”的程序创建了一个文件。现在,当我对文件进行操作时,比如编辑或删除内容,我需要程序警告用户文件当前已打开并且已经被进程使用。虽然它不会是硬锁,但即使在警告之后用户也可以选择编辑它。
此外,如果有人可以帮助 shell 脚本来测试此程序或指导我正确的方向,将不胜感激。
注意:此答案仅适用于 Linux 系统。
您可以采用几种方法之一来实施 warning/soft 文件锁定。
- 使用POSIX 'flock'系统调用,Ir
- 使用锁定文件。
大多数编辑器(vim、emacs)使用第二种方法,并利用锁定文件来保存未提交的修改。但是,考虑到 OP 正在构建一个简单的编辑器,这似乎有点矫枉过正。
要实现软锁定,编辑器应在启动时执行以下操作:
- 发布非阻塞排他锁
- 如果未授予 - 警告用户并发编辑
- 用共享锁替换独占锁
当编辑会话终止时:
- 解锁文件
强调一下:这些解决方案都不太可能检测到文本文件何时被其他人打开programs/editors。