在Mono中锁定Linux串行端口或其他设备

时间:2015-04-07 01:37:27

标签: linux mono serial-port locking

在Linux中,应用程序通常通过在/var/lock/中创建一个名称类似LCK..ttyS1的相应锁定文件来锁定串行端口以供独占使用。

Mono是否实现了串口的锁定?我发现this bug report表明它没有。

Mono是否提供用于锁定其他Linux设备的库,例如自定义字符设备/dev/custom-char-device是否通过/var/lock/LCK..custom-char-device

(注意:现在我甚至不确定"正确的方式"在Linux中锁定串口;请参阅my other question了解相关信息。)

1 个答案:

答案 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()函数需要传递一个本机文件描述符,可以通过FileStreamfs.SafeFileHandle.DangerousGetHandle()获取。