Vb.net C#System.PlatformID.Unix与Linux

Vb.net C#System.PlatformID.Unix与Linux,vb.net,linux,unix,mono,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

问题:

我需要在我的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

我不想因为微软没有添加PlatformID.Linux…

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

此处提供了一些使用uname的代码:

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

此处提供了一些使用uname的代码:

使用诸如“craple”和“Windoze”这样的拼写有点幼稚。我用的是Windoze。我以前从没听说过废话,太好了!我看不出它在OP中的位置。@siride:的确,我不应该把A;-)功能化Linux是Linux不是UniX的缩写。Linux是Unix的超集。不是子集,也不相等。我知道Unix是一个标准,而Unix是一个内核。1次向下投票和1次关闭投票。这里有人没有幽默感。此外,我很恼火,不幼稚。但是症状是一样的。使用诸如“craple”和“Windoze”这样的拼写有点幼稚。我使用Windoze。我以前从没听说过废话,太好了!我看不出它在OP中的位置。@siride:的确,我不应该把A;-)功能化Linux是Linux不是UniX的缩写。Linux是Unix的超集。不是子集,也不相等。我知道Unix是一个标准,而Unix是一个内核。1次向下投票和1次关闭投票。这里有人没有幽默感。此外,我很恼火,不幼稚。但是症状是相同的。OS X是Unix。这是一个糟糕的笑话——不幸的是,这不是一个笑话。它缺少整个proc子系统,并且它还有一个完全改变的ptrace接口。好吧,“最好不要调用uname-a”就这么多了+但是,代码示例为1。@pra:True,它不在标准中,但FreeBSD有它。所有这些操作系统都偏离了Unix的预期实现,我们可以将它们称为所有Unix类并对它们进行分组,或者完全放弃Unix。OS X是Unix。这是一个糟糕的笑话——不幸的是,这不是一个笑话。它缺少整个proc子系统,并且它还有一个完全改变的ptrace接口。好吧,“最好不要调用uname-a”就这么多了+但是,代码示例为1。@pra:True,它不在标准中,但FreeBSD有它。所有这些操作系统都偏离了Unix的预期实现,我们可以将它们称为类Unix并对它们进行分组,或者完全放弃Unix。