" полностью написано на C " никоим образом не гарантирует, что код является переносимым. Портативный компилятор, такой как GCC, абстрагирует детали архитектуры ЦП, но в тот момент, когда вы используете системный вызов, специфичный для конкретной ОС, ваш код становится непереносимым, если вы не заключите фрагмент в #ifdef WHATEVER_OS
. Вот почему такие стандарты, как POSIX, появились для унификации интерфейса системных вызовов в разных операционных системах.
Ограничение вашего кода системными вызовами, определенными POSIX, и использование POSIX-совместимой операционной системы, как правило, должно вас не беспокоить, за небольшими исключениями.