Что такое точно POSIX?

Вы не должны использовать find для этого вообще; grep может обработать открытие файлов любой из списка шарика всего в текущем каталоге:

grep chrome *

... или даже рекурсивно для папки и всего под ним:

grep chrome . -R
139
25.04.2011, 20:41
4 ответа

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

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

Novell получил системный бизнес UNIX® от AT&T/USL, который является, где UNIX® родился. В 1994 они продали право на товарный знак UNIX® к X/Open[3], теперь знают как 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, используемый на UNIX, был разработан на BSD и Unix Быстрый код Файловой системы, одалживался и использовался в различных Операционных системах UNIX как Солярис с их собственными улучшениями.

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

125
27.01.2020, 19:29
  • 1
    большой ответ.. весь (3) ответы были хороши, но этот был чрезвычайно информативен (особенно будучи прошедшим предварительную подготовку другими 2);как раз то, что мне было нужно... и спасибо за комментарий (ниже тела вопроса) о SUS, я понимаю это достаточно хорошо теперь, спасибо... (и я не заметил, что это был только один абзац... Это был слишком интересный :) –  Peter.O 26.04.2011, 04:26
  • 2
    @Mikel, надо надеяться, мое редактирование помогает небольшому –  penguin359 26.04.2011, 07:36
  • 3
    Это - фантастический ответ там @penguin359! –  boehj 28.04.2011, 07:02
  • 4
    У кого-либо есть хорошая идея того, что эти X обозначает? Если это - просто суффикс для указания на отношение к Unix, разве это не должен быть нижний регистр? –  Alex W 24.08.2015, 21:07

POSIX является стандартом Переносимой информационной системы. Это описывает определенные утилиты, API, и обслуживает совместимую операционную систему, должен обеспечить к программному обеспечению (например, сокеты, файловый ввод-вывод и распараллеливающий) наряду с конвенциями по тому, как их нужно назвать из программы.

Идея состоит в том, что программа, записанная для одной Совместимой POSIX ОС, была бы легче к порту к другой совместимой POSIX ОС, чем портирование между non-POSIX-compliant Ose. Поэтому намного легче портировать приложение от, скажем, FreeBSD до Linux, чем это должно портировать его от FreeBSD до Windows (хотя Windows якобы поддерживает подмножество POSIX.)

16
27.01.2020, 19:29

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

14
27.01.2020, 19:29
  • 1
    , который я считал больше об этом теперь и этом, конечно, кажется, что Uinx был курицей, и POSIX был яйцом.. но я действительно задаюсь вопросом, управляет ли UNIX все еще насестом.. т.е. POSIX имеет собственную жизнь теперь, и UNIX должен соответствовать POSIX?... btw., это кажется именем POSIX, был coinded Richard Stallman.... –  Peter.O 25.04.2011, 22:11
  • 2
    @fred.bear: Короткий ответ: UNIX (товарный знак) должен соответствовать POSIX; Unix (продукт) был основным основанием для POSIX; нельды (семейство Ose) главным образом соответствуют, но имеют больше общего. Посмотрите, что действительно ли Linux является Unix? и Mac OS X, UNIX? для связанных обсуждений. –  Gilles 'SO- stop being evil' 25.04.2011, 23:34
  • 3
    @fred-bear Многие люди утверждают, что стандарт POSIX в наше время ведется сообществом разработчиков ядра Linux, которое (если верный), по моему скромному мнению, не является хорошей вещью... –  sakisk 26.04.2011, 17:05
  • 4
    @faif я никогда не слышал это и нахожу его вряд ли, можно ли отправить ссылку? –  penguin359 28.04.2011, 07:06
  • 5
    @Gilles Open Group, владелец товарного знака UNIX® также отвечает за сертификацию UNIX® и спецификацию, которую они называют Единственной Спецификацией UNIX или SUS. POSIX разрабатывается IEEE, кто не отвечает за UNIX®. С 2001 они были разработаны в основном в синхронизации, но это технически SUS, который является теперь в версии 4, которая определила UNIX®. –  penguin359 28.04.2011, 07:11

Самые важные вещи POSIX 7 определяет

  1. C API

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

    • дополнительные файловые операции: mkdir , имя каталога , символическая ссылка , ссылка для чтения , ссылка (жесткие ссылки), опрос () , stat , sync , nftw ()
    • процесс и потоки: fork , execl , wait , канал , семафоры sem _ * , разделяемая память ( shm _ * ), kill , параметры планирования ( nice , sched _ * ), sleep , mkfifo , setpgid ()
    • сеть: socket ()
    • управление памятью: mmap , mlock , mprotect , madvise , brk ()
    • утилиты: регулярные выражения ( reg * )

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

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

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

  2. Утилиты CLI

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

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

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

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

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

    Основная реализация рабочего стола Linux: GNU Bash .

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

    Например: HOME , ПУТЬ .

    Семантика поиска PATH указана , включая , как косая черта предотвращает поиск PATH .

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

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

    POSIX добавляет:

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

    Есть два типа: BRE (Базовый) и ERE (Расширенный). Базовая версия устарела и предназначена только для того, чтобы не нарушать работу API.

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

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

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

  7. Структура каталогов

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

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

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

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

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

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

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

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

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

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

  10. «ACL POSIX» (списки контроля доступа), например как бэкэнд для 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 для 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: https://stackoverflow.com/questions/27604455/is-android-posix-compatible

Бонусный уровень

Linux Standard Base является дальнейшим расширением POSIX.

Используйте индексы без фреймов, они более читабельны и доступны для поиска: 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

59
27.01.2020, 19:29

Теги

Похожие вопросы