代码之家  ›  专栏  ›  技术社区  ›  Stefan Steiger Marco van de Voort

C system.platformid.unix与linux

  •  -1
  • Stefan Steiger Marco van de Voort  · 技术社区  · 15 年前

    问题:

    我需要在我的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,只是因为微软没有添加一个平台。

    1 回复  |  直到 15 年前
        1
  •  5
  •   jpobst    15 年前

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

    这里提供了一些使用UNAME的代码: http://github.com/jpobst/Pinta/blob/master/Pinta/Platform.cs