Будьте осторожны, как вы справляетесь с этим. Вы должны идентифицировать функции O / S, которые вы хотите использовать по функциям, а не O / S, и соответственно написать свой код. Затем в одном заголовке вы можете указать, какие функции доступны в операционной системе, для которой вы компилируете. Это метод, используемый autoconf, и даже если вы не используете сам autoconf, этот метод лучше, чем метод на платформе. Помните, что функции, имеющиеся в одном O / S, часто переносятся и становятся доступными и в других, поэтому, если вы работаете с функциями, вы можете легче адаптироваться к будущему, чем если бы вы работали только с O / S
Вы также должны написать свой код соответствующим образом и переносимо. По возможности изолируйте зависимости O / S в отдельных файлах и кодируйте в абстрактный интерфейс O / S, который делает то, что вам нужно. В крайнем случае вы получите Java JVM; вам не нужно заходить так далеко, но вы можете устранить большинство проблем.
Посмотрите на переносимые библиотеки, такие как библиотека Apache Portable Runtime (APR).
И напишите свой код следующим образом:
#ifdef HAVE_PWRITE
...code using pread() and pwrite()...
#else
...code using plain old read() and write()...
#endif
Это чрезвычайно упрощенный пример - может быть несколько откатов, прежде чем вы будете использовать обычные read () и write (). Тем не менее, эта концепция используется в наиболее переносимом коде - таких как GCC и Apache и т. Д.