我正在使用来自 .NET Core 2.0 的 libc 调用来获得 Linux 上的串行端口功能。
我正在导入这样的 libc 函数:
[DllImport("libc")]
public static extern int read(int fd, IntPtr buf, int count);
然后它是这样调用的:
int result = Libc.read(fileDescriptor.Value, readingBuffer, READING_BUFFER_SIZE);
如果读取函数失败,结果变量将包含 -1。
如何从 C#/.NET Core 2.0 获取 errno 变量,以便从失败的读取调用中获取详细的错误代码?
最佳答案
正确的代码是这样的:
int fileDescriptor = Libc.open(deviceName, Libc.OpenFlags.O_RDWR | Libc.OpenFlags.O_NONBLOCK);
if (fileDescriptor == -1)
{
var errno = System.Runtime.InteropServices.Marshal.GetLastWin32Error();
...
}
关于serial-port - 如何在 .NET Core 2.0 中访问 errno?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47829750/