2015-10-25 6 views

ответ

2

Ответ зависит от того, является ли он совместимым с POSIX вызовом, и если вы используете совместимую с POSIX систему.

Если вы используете POSIX-вызов, большинство из них, о которых вы упомянули, будут поддерживать и работать в значительной степени таким же образом, так как его четко определенный стандарт, за которым они строго следуют.

Существует множество системных вызовов, специфичных для определенных систем, если вы используете такие системные вызовы или API, то ваш код подвержен риску, поскольку есть вероятность, что он может быть или не быть доступным в других системах.

Подробнее о POSIX here.

3

Чтобы ответить на ваш вопрос о Linux Системные вызовы, вы должны прочитать man syscalls.

Так что да, с разными дистрибутивами, ядро ​​Linux будет меняться, следовательно, доступные системные вызовы.

Что вы подразумеваете под Linux API?

  • внутренний API Linux Kernel в
  • или C ABI
+0

(1) «с различными дистрибутивами, ядро ​​Linux изменится». Я рассматриваю одно и то же ядро ​​для всех дистрибутивов. Тогда каков ваш ответ? (2) Linux API - это библиотека OS API, построенная на системных вызовах ОС. – Tim

2

Чтобы ответить на первую часть, ответ смесь да и нет, да часть, все распределения Linux, их ядра, ядро происходит от основного дерева repository.

Нет, это то, что между Kernel 2.x, Kernel 3.x и Kernel 3.x существуют огромные различия, поэтому базовая реализация API, управляющих аспектами системы, таких как драйверы устройств, например, отличается. Например, модуль ядра, зависящий от реализации Kernel v3.x, не будет работать под Kernel v2.x.

Это, тем не менее, может означать, что различные версии могут быть переданы в более ранние версии ядра.

Однако системные вызовы относительно статичны и не сильно изменились. (см. SysCalls))

С другой стороны, дистрибутивы охватывают ядро ​​и все библиотеки, в частности библиотеку GNU C, которые были бы перекомпилированы, поскольку обновления там, где это применимо.

Если API за этими библиотеками времени выполнения не изменился, тогда код, предназначенный для версии библиотеки, может быть перекомпилирован в отношении более новой версии библиотек времени выполнения.

Смежные вопросы