Ни ISO C, ни POSIX не предоставляют функциональные возможности для определения базовой ОС во время выполнения.С теоретической точки зрения это не имеет значения, так как C предлагает оболочки для самых распространенных системных вызовов, а с точки зрения «придирки» даже не нужно быть базовой ОС.
Однако во многих реальных сценариях оказалось полезным знать больше о хост-среде, чем С готов поделиться, например, чтобы выяснить, где хранить файлы конфигурации или как вызывать select()
, поэтому:
Существует ли идиоматический способ для приложения, написанного на C, определить базовую ОС во время выполнения?
По крайней мере, я могу легко выбирать между Linux, Windows, BSD иMacOS?
В настоящее время я предполагаю проверить наличие определенных файлов / каталогов, таких как C:\
или /
, но этот подход кажется ненадежным.Возможно, запрос ряда таких источников может помочь установить понятие «отпечатки ОС», что повысит надежность.В любом случае, я с нетерпением жду ваших предложений.