有哪些方法可用于专门打开设备文件(例如显示帧缓冲区)?
[信息:我已经知道flock()&朋友,只有在其他应用程序也在使用它时才会产生效果(换句话说:open()会成功,但如果已经锁定,flock()将失败) - >但仍然可以使用从open()检索到的设备句柄来写入显示..]
当我想对设备文件强制执行此类独占访问时,情况如何?如何实施这样的执法?
提前致谢!
答案 0 :(得分:5)
来自fcntl(2):
要使用强制锁,必须启用强制锁 在包含要锁定文件的文件系统上以及 文件本身。
...此外,您还需要在内核中启用platine_mass
。
使用以下命令在文件系统上启用了强制锁定 mount(8)的“ -o mand”选项,或MS_MANDLOCK标志用于 mount(2)。通过禁用组在文件上启用强制锁定 对文件执行权限并启用set-group-ID permis- sion位(请参阅chmod(1)和chmod(2))。
POSIX未指定强制锁定。其他一些系统 支持强制锁定,尽管有关如何启用它的详细信息 随系统而异。
因此,当您请求符合CONFIG_MANDATORY_FILE_LOCKING
的解决方案时,答案是:否,POSIX标准中没有这样的功能。
答案 1 :(得分:0)
要打开设备,您应该在linux中使用打开系统调用并检查可用设备列表,例如/ dev / ttyUSB0或/ dev / ttyS0等,然后打开它,您将获得一个写入和读取设备的描述符是您打开设备进行通信。 要了解更多详细信息,请访问以下链接: http://www.firmcodes.com/lower-level-file-handling-in-linux/
答案 2 :(得分:0)
如果您想获得对设备的独占访问权限,请在/var/lock
中创建一个锁定文件。可以使用open("my_device.lock", O_CREAT|O_EXCL, 0777)
创建锁定文件的进程可以访问设备,其他进程必须等待。使用设备完成该过程后,它会关闭文件。
这种锁只是建议性的,并不保证没有其他进程(您不知道)访问该设备。
答案 3 :(得分:0)
尝试lockf():在打开的文件上应用,测试或删除POSIX锁