C # System.PlatformID.Unix против Linux - PullRequest
0 голосов
/ 08 августа 2010

Вопрос:

Мне нужно сделать несколько системных вызовов в моих приложениях 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, просто потому, что Microsoft не добавила PlatformID.Linux ...

1 Ответ

5 голосов
/ 08 августа 2010

Вам нужно будет использовать "uname -a", чтобы отличать Linux от Unix, а также OSX.По историческим причинам Mono сообщает о OSX как Unix, а не MacOSX.

Некоторый код, который использует uname, доступен здесь: http://github.com/jpobst/Pinta/blob/master/Pinta/Platform.cs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...