Что такое POSIX?

Я вижу, что POSIX упоминается часто и везде, и я предположил, что это базовый стандарт UNIX .. пока я не заметил следующую выдержку на странице Википедии: The Open Group

Открытая группа наиболее известна как сертифицирующий орган для товарного знака UNIX и публикация технического стандарта Single UNIX Specification , который расширяет стандарты POSIX и является официальным определением системы UNIX .

Если официальное определение UNIX-системы является расширением POSIX, то что же такое POSIX? ,,, Это, безусловно, кажется пробным камнем в мире UNIX, но я не знаю, как он вписывается в общую картину.

  • Почему Debian Wheezy не отображает значки на рабочем столе?
  • Lose gnome3 обои
  • Как я могу использовать тройную косую черту как разделитель с разрезом?
  • Почему файлы на карте «Рабочий стол» не отображаются на рабочем столе?
  • Какова история, стоящая за оформлением на стороне клиента?
  • Как мы можем получить временное имя файла в стандартном сценарии IEEE 1003.1?
  • 4 Solutions collect form web for “Что такое POSIX?”

    Сначала POSIX был стандартом в 1988 году задолго до спецификации Single UNIX. Это была одна из попыток объединить все различные UNIX-вилки и UNIX-подобные системы. POSIX является стандартом IEEE, но поскольку IEEE не владеет товарным знаком UNIX®, стандарт не UNIX®, хотя он основан на существующем интерфейсе UNIX в то время. Первый стандарт POSIX.1 официально известен как IEEE std 1003.1-1988. [ 1 ] IEEE взимает значительную плату за получение копии стандарта.

    В 1997 году Open Group выпустила спецификацию Single UNIX (SUSv2) на основе работы стандарта IOSE стандарта POSIX. SUSv3 был выпущен в 2001 году из совместной рабочей группы между IEEE и Open Group, известной как Austin Group. SUSv3 также известен как POSIX: 2001 [ 2 ]. Теперь есть POSIX: 2004 и POSIX: 2008, который является ядром SUSv4. Что касается UNIX®, UNIX® – это то, что говорит текущий зарегистрированный товарный знак. С 1994 года это The Open Group.

    Novell приобрела системный бизнес UNIX® от AT & T / USL, где родился UNIX®. В 1994 году они продали право на товарный знак UNIX® на X / Open [ 3 ], теперь известный как The Open Group. Затем они продали исходный код UNIX® для SCO как UNIXWARE®. [ 3 ] UNIX® сам разворачивался много раз [ 4 ] [ 5 ] частично из-за модели лицензирования AT & T. Приобретение UNIX® предоставило вам полный источник операционной системы и полную цепочку инструментов для ее создания. Модификации источника могут быть распространены и использованы любым, кому принадлежит лицензия UNIX® от AT & T. Стоимость лицензии была в тысячах.

    BSD был проектом в Беркли, который добавил ряд усовершенствований в UNIX®. Код BSD был выпущен по гораздо более либеральной лицензии, чем источник AT & T, и не требовал лицензионного сбора или даже требования к распределению с источником, в отличие от GPL, который использует проект GNU и Linux. Это привело к тому, что значительная часть кода BSD была включена в различные коммерческие вилки UNIX. Около 4.3BSD они почти заменили любую потребность в исходном коде AT & T UNIX®. FreeBSD / NetBSD / OpenBSD – это все вилки 4.3BSD, которые являются полной операционной системой и не имеют исходного исходного AT & T-кода. Они также не имеют права на товарный знак UNIX®, но большая часть их кода используется коммерческими операционными системами UNIX. API-интерфейс Socket, используемый в UNIX, был разработан на BSD, а код быстрой файловой системы Unix был заимствован и использован в различных операционных системах UNIX, таких как Solaris, с их собственными усовершенствованиями.

    Linux был разработан в 1991 году, но был разработан с нуля, в отличие от BSD, и использует существующий проект GNU, который является реализацией значительной части пользовательского пространства UNIX. Он реализует большую часть POSIX для совместимости и является UNIX-подобным в дизайне, но у него нет тесного соединения с AT & T или UNIX®, которое есть у BSD.

    Самое важное, что POSIX 7 определяет

    1. C API

      Значительно расширяет ANSI C такими вещами, как:

      • больше файловых операций: mkdir , dirname , symlink , readlink , link (hardlinks), poll , sync
      • процесс и потоки: fork , execl , pipe , semaphors sem_* , разделяемая память ( shm_* ), kill , параметры планирования ( nice , sched_ ), sleep
      • сетей
      • обычные выражения
      • расширенное управление памятью: mmap , mlock , mprotect , madvise

      Эти API также определяют основные системные концепции, от которых они зависят, например fork требует концепции процесса.

      Многие системные вызовы Linux существуют для реализации конкретной функции API POSIX C и обеспечения совместимости с Linux, например sys_write , sys_read , …

      Основная реализация настольных компьютеров Linux: glibc, которая во многих случаях просто предоставляет неглубокую оболочку для системных вызовов.

    2. Утилиты CLI

      Например: cd , ls , echo , …

      Многие утилиты представляют собой прямые передние концы оболочки для соответствующей функции C API, например mkdir .

      Основная реализация настольных компьютеров Linux: GNU Coreutils для небольших, отдельные проекты GNU для больших: sed , grep , awk , … Некоторые утилиты CLI реализованы Bash как встроенные .

    3. Язык оболочки

      Например, a=b; echo "$a" a=b; echo "$a"

      Основная операционная среда Linux: GNU Bash.

    4. Переменные среды

      Например: HOME , PATH .

    5. Статус выхода программы

      ANSI C говорит об 0 или EXIT_SUCCESS для успеха, EXIT_FAILURE для отказа и оставляет оставшуюся реализацию определенной.

      POSIX добавляет:

      • 126 : команда найдена, но не выполнена.

      • 127 : команда не найдена.

      • > 128 : завершается сигналом.

        Но POSIX, похоже, не указывает правило 128 + SIGNAL_ID используемое Bash: код выхода по умолчанию при завершении процесса?

    6. Регулярное выражение

      Существует два типа: BRE (Basic) и ERE (Extended). Basic устарел и поддерживается только для того, чтобы не нарушать API.

      Они реализованы с помощью функций C API и используются во всех утилитах CLI, например, grep принимает BRE по умолчанию, а ERE – с -E .

      Например: echo 'a.1' | grep -E 'a.[[:digit:]]' echo 'a.1' | grep -E 'a.[[:digit:]]'

      Основная реализация Linux: glibc реализует функции под regex.h, которые такие программы, как grep могут использоваться в качестве backend.

    7. Справочник

      Например: /dev/null , /tmp

      Linux FHS значительно расширяет POSIX.

    8. Имена файлов

      • / является разделителем путей
      • NUL не может использоваться
      • . является cwd , .. parent
      • переносные имена файлов
        • используйте максимум максимум 14 символов и 256 для полного пути
        • может содержать только: a-zA-Z0-9._-

      См. Также: https://stackoverflow.com/questions/18550253/what-is-posix-compliance-for-filesystem

    9. Соглашения API API командной строки

      Не обязательно, используется POSIX, но почти нигде больше, особенно не в GNU. Но это правда, это слишком ограничительно, например, только однобуквенные флаги (например, -a ), а не двойные дефисные длинные версии (например, --all ).

      Несколько широко используемых конвенций:

      • - означает stdin, где ожидается файл
      • -- завершает флаги, например ls -- -l чтобы указать каталог с именем -l

      См. Также: https://stackoverflow.com/questions/8957222/are-there-standards-for-linux-command-line-switches-and-arguments

    Кто соответствует POSIX?

    Многие системы тесно связаны с POSIX, но лишь немногие из них фактически сертифицированы Open Group, которая поддерживает стандарт. Известные сертифицированные включают:

    Большинство дистрибутивов Linux очень совместимы, но не сертифицированы, потому что они не хотят платить проверку соответствия.

    См. Страницу wiki .

    Windows

    Windows реализовала POSIX в некоторых своих профессиональных дистрибутивах.

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

    Поддержка была устарела в Windows 8:

    В 2016 году был анонсирован новый официальный Linux-подобный API под названием «Подсистема Windows для Linux». Он включает в себя системные вызовы Linux, запуск ELF, части файловой системы /proc , Bash, GCC, (TODO, вероятно, glibc?), apt-get и многое другое: https://channel9.msdn.com/Events/Build/2016/P488 поэтому я считаю, что это позволит Windows запускать много, если не все, POSIX. Однако он ориентирован на разработчиков / развертывание вместо конечных пользователей. В частности, не было планов разрешить доступ к графическому интерфейсу Windows.

    Исторический обзор официальной совместимости Microsoft POSIX: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/

    Cygwin – хорошо известный сторонний проект GPL, который «обеспечивает существенные функциональные возможности POSIX API» для Windows, но требует, чтобы вы «перестроили приложение из источника, если хотите, чтобы он работал в Windows». MSYS2 – связанный проект, который, кажется, добавляет больше функциональности поверх Cygwin.

    Уровень бонуса

    Стандартная база Linux расширяет POSIX.

    Используйте индексы non-frames, они более читабельны и доступны для поиска: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

    Получить полную версию страниц HTML для grepping: https://stackoverflow.com/questions/453993/is-there-a-listing-of-the-posix-api-functions/45832939#45832939

    POSIX – это стандарт Portable Operating System. В нем описываются некоторые утилиты, API и сервисы, которые совместимая операционная система должна предоставлять программному обеспечению (например, сокетам, файловым вводам и потокам), а также соглашениям о том, как их вызывать из программы.

    Идея заключается в том, что программа, написанная для одной ОС, совместимой с POSIX, будет проще переносить на другую ОС, совместимую с POSIX, чем переносить между OS, не совместимыми с POSIX. Вот почему гораздо проще переносить приложение, например, с FreeBSD в Linux, чем переносить его из FreeBSD в Windows (хотя Windows якобы поддерживает подмножество POSIX).

    POSIX – это подмножество UNIX, которое предназначено для охвата различных Unix-подобных сред для других операционных систем; это первоначально включало такие среды, как Eunice для VMS, личность POSIX Windows NT и домен / сервер Apollo. Вы можете подумать об этом как о стандартном API-интерфейсе совместимости для подмножества служб операционной системы, поведение которых является общим для Unix и non-Unix. Дополнительную информацию см. В http://standards.ieee.org/develop/wg/POSIX.html .

    Interesting Posts

    Sed удалить строку, если n-й символ не является конкретным символом

    Прерывание естественной прокрутки Magic trackpad

    После изменения сети openvpn продолжает запрашивать устаревшие DNS

    Как восстановить сохраненные (сохраненные) электронные письма после повреждения конфигурации KMail?

    Любой способ, с помощью которого я могу преобразовать любую заданную временную метку в стандартную в BASH

    Создание сценария автоматического запуска бездействия

    Как исправить ошибку, из-за которой средство восстановления видео не запускается в Wine?

    find -exec не работает в скрипте bash, но работает в терминале

    Включить SELinux при загрузке

    Не удается найти каталог vgaswitcheroo в CentOS6

    Выключить и перезапустить контрольный код?

    Как включить wpa_supplicant при загрузке?

    Как организован стек ядра Linux для архитектуры ARM?

    Как изменить дату изменения каталога при изменении файлов из этого каталога?

    Туннельный трафик через другую машину через ssh

    Linux и Unix - лучшая ОС в мире.