vb.net - C# System.PlatformID.Unix 与 Linux

标签 vb.net linux unix mono

问题:

我需要在我的 C# 应用程序中进行一些系统调用。 不幸的是,这在 Linux 上的表现与在 UNIX 上的表现不同。

现在我曾经像这样在运行时切换操作系统

If Environment.OSVersion.Platform = System.PlatformID.Unix Then
    ' Linux/Unix '
ElseIf Environment.OSVersion.Platform = System.PlatformID.MacOSX Then
    ' Apple '
Else
    ' Windows '
End If

现在的问题是我需要区分 UNIX 和 Linux,因为它们是不同的。

有什么方法可以判断操作系统是 Linux 还是 Unix? 最好不要调用 uname -a

我不想放弃 Unix 而只做 Linux,因为微软没有添加 PlatformID.Linux...

最佳答案

您需要使用“uname -a”来区分 Linux 和 Unix,以及 OSX。由于历史原因,Mono 将 OSX 报告为 Unix,而不是 MacOSX。

此处提供了一些使用 uname 的代码: http://github.com/jpobst/Pinta/blob/master/Pinta/Platform.cs

关于vb.net - C# System.PlatformID.Unix 与 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3434757/

相关文章:

vb.net - 将 .bas 文件移植到 vb.net

linux - 是否有适用于 Linux 的命令行 TMX 编辑工具(多语言支持)?

linux - 如何从纯文本中 grep 键值存储中的值

linux - 回溯 5 Armitage MSF

linux - UNIX 和 LINUX 'commands' 之间有什么区别?命令上下文的差异

VB.NET 使用密码加密

linux - 从 mplayer 读取控制台输出以解析轨道的位置/长度

vb.net - 插入事务和参数?

Linux 内核模块编程指南 - 示例 2.4

c - X11 改变屏幕方向 Debian