Что такое POSIX? Я прочитал статью в Википедии и читаю ее каждый раз, когда сталкиваюсь с термином. Дело в том, что я никогда не понимал, что это такое.
Может ли кто-нибудь объяснить мне, объясняя "необходимость POSIX" тоже?
linux
unix
posix
terminology
когти
источник
источник
Ответы:
POSIX - это семейство стандартов, определенных IEEE , для уточнения и унификации интерфейсов прикладного программирования (и вспомогательных вопросов, таких как утилиты командной строки), предоставляемых операционными системами Unix-y. Когда вы пишете свои программы, основываясь на стандартах POSIX, вы можете быть уверены, что сможете легко переносить их между большим семейством производных Unix (включая Linux, но не ограничиваясь этим!); если и когда вы используете какой-либо Linux API, который не стандартизирован как часть Posix, вам будет труднее, если и в будущем вы захотите портировать эту программу или библиотеку на другие системы Unix-y (например, MacOSX) в будущем.
источник
Microsoft's market share on desktops, at least, makes it "what the world follows"
- Интересно отметить, насколько многое изменилось с момента этого комментария 2009 года :)Самые важные вещи, которые определяет POSIX 7
C API
Значительно расширяет ANSI C такими вещами, как:
mkdir
,dirname
,symlink
,readlink
,link
() жесткие ссылки,poll()
,stat
,sync
,nftw()
fork
,execl
,wait
,pipe
, semaphorssem_*
, общая память (shm_*
),kill
параметры планирования (nice
,sched_*
),sleep
,mkfifo
,setpgid()
socket()
mmap
,mlock
,mprotect
,madvise
,brk()
reg*
)Эти API также определяют основные концепции системы, от которых они зависят, например,
fork
требуют концепцию процесса.Многие системные вызовы Linux существуют для реализации конкретной POSIX C функции API и сделать Linux совместимый, например
sys_write
,sys_read
... Многие из этих системных вызовов также Linux-специфические расширения , однако.Основная реализация Linux для настольных компьютеров: glibc, которая во многих случаях просто обеспечивает поверхностную оболочку для системных вызовов.
Утилиты CLI
Например:
cd
,ls
,echo
...Многие утилиты являются прямыми оболочками для соответствующей функции C API, например
mkdir
.Реализация настольных Основные Linux: GNU Coreutils для маленьких, отдельные GNU проекты для больших,:
sed
,grep
,awk
, ... Некоторые утилиты CLI реализуются Bash как встроенные модули .Язык оболочки
Например,
a=b; echo "$a"
Основная реализация рабочего стола Linux: GNU Bash .
Переменные среды
Например:
HOME
,PATH
.PATH
указана семантика поиска , включая то, как косые черты препятствуютPATH
поиску .Статус выхода из программы
ANSI C говорит
0
илиEXIT_SUCCESS
для успеха,EXIT_FAILURE
для неудачи и оставляет определение остальной реализации определенным.POSIX добавляет:
126
: команда найдена, но не исполняемая.127
: команда не найдена.> 128
: прекращается сигналом.Но POSIX, похоже, не определяет
128 + SIGNAL_ID
правило, используемое Bash: /unix/99112/default-exit-code-when-process-is-terminatedРегулярное выражение
Существует два типа: BRE (базовый) и ERE (расширенный). Basic устарел и поддерживается только для того, чтобы не нарушать API.
Они реализуются функциями API C и используются в утилитах CLI, например,
grep
принимают BRE по умолчанию и ERE с-E
.Например:
echo 'a.1' | grep -E 'a.[[:digit:]]'
Основная реализация Linux: glibc реализует функции в regex.h, которые подобные программы
grep
могут использовать в качестве бэкэнда.Структура каталогов
Например:
/dev/null
,/tmp
Linux FHS значительно расширяет POSIX.
Имена файлов
/
является разделителем путиNUL
не может быть использован.
этоcwd
,..
родительa-zA-Z0-9._-
См. Также: что такое соответствие posix для файловой системы?
Соглашения API утилиты командной строки
Не обязательно, используется POSIX, но почти нигде, особенно в GNU. Но правда, это слишком ограничительно, например, только однобуквенные флаги (например
-a
), нет длинных версий с двойным дефисом (например--all
).Несколько широко используемых соглашений:
-
означает STDIN, где файл ожидается--
завершает флаги, например,ls -- -l
для отображения каталога с именем-l
Смотрите также: Существуют ли стандарты для ключей и аргументов командной строки Linux?
«POSIX ACL» (списки контроля доступа), например, используемые в качестве бэкэнда для
setfacl
.Это было отменено, но было реализовано в нескольких ОС, в том числе в Linux с
setxattr
.Кто соответствует POSIX?
Многие системы строго следуют POSIX, но немногие фактически сертифицированы Open Group, которая поддерживает стандарт. Известные сертифицированные включают в себя:
Большинство дистрибутивов Linux очень совместимы, но не сертифицированы, поскольку не хотят оплачивать проверку соответствия. Inspur K-UX и Huawei EulerOS являются двумя сертифицированными примерами.
Официальный список сертифицированных систем можно найти по адресу: https://www.opengroup.org/openbrand/register/, а также на вики-странице .
Windows
Windows внедрила POSIX в некоторых своих профессиональных дистрибутивах.
Поскольку это была необязательная функция, программисты не могли полагаться на нее для большинства приложений конечного пользователя.
Поддержка устарела в Windows 8:
В 2016 году был объявлен новый официальный Linux-подобный API под названием «Windows Subsystem for 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.
Android
В Android имеется собственная библиотека C (Bionic), которая не полностью поддерживает POSIX, начиная с Android. O: Совместима ли Android POSIX?
Бонусный уровень
Standard Base Linux расширяет POSIX.
Используйте некадровые индексы, они гораздо более читабельны и доступны для поиска: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
Получите полную версию HTML-страниц для ознакомления: где находится список функций API POSIX C?
источник
POSIX это:
По сути, это был набор мер для облегчения боли при разработке и использовании различных версий UNIX благодаря наличию (в основном) общего API и утилит. Ограниченное соответствие POSIX также распространяется на различные версии Windows.
источник
Позвольте мне дать «неофициальное» объяснение.
POSIX - это набор стандартов, который пытается отличить «UNIX» и UNIX-подобные системы от тех, которые несовместимы с ними. Он был создан правительством США для целей закупок. Идея заключалась в том, что федеральным закупкам США нужен был способ юридически определить требования к различным видам заявок и контрактов таким образом, чтобы их можно было использовать для исключения систем, к которым данная существующая кодовая база или программист НЕ были бы переносимы.
Поскольку POSIX был написан постфактум ... для описания слабо схожего набора конкурирующих систем ... он НЕ был написан так, чтобы его можно было реализовать.
Так, например, NT для Microsoft был написан с достаточным соответствием POSIX, чтобы претендовать на некоторые ставки ... хотя подсистема POSIX была практически бесполезна с точки зрения практической переносимости и совместимости с системами UNIX.
Различные другие стандарты для UNIX были написаны на протяжении десятилетий. Такие вещи, как SPEC1170 (указано 11 000 вызовов функций, которые должны были быть реализованы совместимым образом) и различные воплощения SUS (Single UNIX Specification).
По большей части эти «стандарты» были неадекватны любому практическому техническому применению. Большинство из них существуют для аргументации, правовых споров и других неблагополучных причин.
источник
POSIX - это стандарт для операционных систем, который должен был облегчить написание кроссплатформенного программного обеспечения. Это особенно важно в мире Unix.
источник
POSIX - это набор стандартов, выдвинутых IEEE и The Open Group, который описывает, как будет работать идеальный Unix. Программисты, пользователи и администраторы могут ознакомиться с документом POSIX и ожидать, что POSIX-жалоба Unix обеспечит все перечисленные стандартные средства.
Так как каждый Unix делает вещи немного по-своему - у Solaris, Mac OS X, IRIX, BSD и Linux есть свои причуды - POSIX особенно полезен для тех, кто в отрасли, так как он определяет стандартную среду для работы. Например, большинство функций в библиотеке C основано на POSIX; поэтому программист может использовать его в своем приложении и ожидать, что он будет вести себя одинаково в большинстве Unices.
Тем не менее, различные области Unix, как правило, в центре внимания, а не стандартные.
Самое замечательное в POSIX - вы можете прочитать его сами:
Выпуск 7 известен как POSIX.1-2008, и там есть что-то новое - однако, Google-fu для POSIX.1 и тому подобное позволит вам увидеть всю историю, что такое Unix.
источник
Из книги: Практическое руководство по Linux
источник
Posix больше похож на ОС, это «стандарт ОС». Вы можете представить ее как воображаемую ОС, которой на самом деле не существует, но у нее есть документация. Эти документы являются «стандартом posix», определенным IEEE, который является крупной организацией стандартов США. Операционные системы, реализующие эту спецификацию, являются «Posix-совместимыми».
Государственное регулирование предпочитает Posix-совместимые решения в своих инвестициях, поэтому совместимость с Posix имеет значительные финансовые преимущества, особенно для крупных ИТ-компаний США.
Награда за то, что ОС полностью совместима с posix, это гарантия того, что она будет беспрепятственно компилировать и запускать все приложения, совместимые с Posix.
Linux - самый известный. OSX, Solaris, NetBSD и Windows NT также играют здесь. Free- и OpenBSD только "почти" совместимы с Posix. Послегарантийное соответствие WinNT является лишь псевдо-решением, чтобы избежать вышеуказанного государственного регулирования.
источник
Этот стандарт обеспечивает общую основу для Unix-подобных операционных систем. Он определяет, как должна работать оболочка, что ожидать от таких команд, как ls и grep, а также от ряда библиотек C, которые авторы C могут ожидать получить.
Например, каналы, которые пользователи командной строки используют для объединения команд, подробно описаны здесь, что означает, что функция popen (открытие канала) в C соответствует стандарту POSIX, а не ISO C.
источник
POSIX означает переносимый интерфейс операционной системы и является стандартом IEEE, разработанным для облегчения переносимости приложений. POSIX - это попытка консорциума поставщиков создать единую стандартную версию UNIX.
источник
POSIX определяет набор стандартов для операционной системы или программы. Цель состоит в том, чтобы написать новое программное обеспечение, совместимое с UNIX-подобными системами.
Например, программа, работающая в Linux, также может быть скомпилирована и запущена в других UNIX-подобных системах, таких как Solaris, HP-UX, AIX и т. Д.
Наиболее популярными примерами являются
GNU Bash
100% -ное соответствие иgawk
полезность POSIX .источник
Posix управляет совместимостью, переносимостью и в других областях, таких как использование и механизм fork, разрешения
и стандарты файловой системы, такие как / etc, / var, / usr и так далее. Следовательно, когда разработчики пишут программу под Posix-совместимой системой, такой как, например, Linux, как правило, не всегда гарантируется запуск в другой posix-совместимой системе, такой как система IBM AIX или другие коммерческие варианты Unix. Posix - хорошая вещь, так как она облегчает разработку программного обеспечения для максимальной мобильности, к которой он стремится. Надеюсь, что этот ответ имеет смысл.Спасибо Jed Smith & Tinkertim за указание на мою ошибку - моя плохая !!! :(
источник
Спецификация (проект) о том, как сделать ОС совместимой с поздней ОС UNIX (да благословит его Бог!). Вот почему macOS и GNU / Linux имеют очень похожие терминальные командные строки, графические интерфейсы, библиотеки и т. Д. Потому что они оба были разработаны в соответствии с планом POSIX.
POSIX не говорит инженерам и программистам, как кодировать, но что кодировать.
источник
Некоторые факты о POSIX, которые не так ярки.
POSIX также является интерфейсом системного вызова или API, и ему почти 30 лет.
Он был разработан для последовательного доступа к данным на локальном хранилище с использованием одного компьютера с одним процессором.
Безопасность не была главной проблемой в POSIX, так как в течение многих лет приводила к многочисленным атакам в условиях гонки и заставляла программистов обходить эти ограничения.
Серьезные ошибки все еще обнаруживаются, ошибки, которые можно было бы предотвратить с помощью более безопасного дизайна POSIX API.
POSIX ожидает, что пользователи будут выполнять один синхронный вызов за раз и ждут его результатов, прежде чем отправлять следующий. Сегодняшние программисты рассчитывают выдавать много асинхронных запросов одновременно, чтобы повысить общую пропускную способность.
Этот синхронный API особенно плох для доступа к удаленным и облачным объектам, где важны большие задержки.
источник