在Linux中,应用程序通常通过在/var/lock/
中创建一个名称类似LCK..ttyS1
的相应锁定文件来锁定串行端口以供独占使用。
liblockdev
liblockfile
(认为它不像liblockdev
一样功能齐全 - 它不会处理符号链接或具有相同设备号的多个设备文件)Mono是否实现了串口的锁定?我发现this bug report表明它没有。
Mono是否提供用于锁定其他Linux设备的库,例如自定义字符设备/dev/custom-char-device
是否通过/var/lock/LCK..custom-char-device
?
(注意:现在我甚至不确定"正确的方式"在Linux中锁定串口;请参阅my other question了解相关信息。)
答案 0 :(得分:0)
据我所知,使用flock()
锁定串口或其他设备是Linux的发展方向(遵循Debian在Debian bug #734086中的领先地位。)
我找到advisory locking example in Mono C#,但使用fcntl()
锁定而不是flock()
锁定,these two methods are different in Linux。
所以我认为有必要使用本地帮助程序库来提供flock()
,这是通过Interop with Native Libraries调用的。 flock()
函数需要传递一个本机文件描述符,可以通过FileStream
从fs.SafeFileHandle.DangerousGetHandle()
获取。