Що таке POSIX? Я прочитав статтю у Вікіпедії і читаю її кожен раз, коли стикаюся з цим терміном. Справа в тому, що я ніколи не зрозумів, що це таке.
Чи може хто-небудь пояснити це мені, пояснивши "необхідність POSIX" теж?
Що таке POSIX? Я прочитав статтю у Вікіпедії і читаю її кожен раз, коли стикаюся з цим терміном. Справа в тому, що я ніколи не зрозумів, що це таке.
Чи може хто-небудь пояснити це мені, пояснивши "необхідність POSIX" теж?
Відповіді:
POSIX - це сімейство стандартів, визначених IEEE , щоб уточнити та зробити єдиними інтерфейси програмування додатків (і допоміжні питання, такі як утиліти оболонки командного рядка), що надаються операційними системами Unix-y. Коли ви пишете свої програми, що покладаються на стандарти POSIX, ви можете бути впевнені, що зможете легко перенести їх серед великої родини похідних Unix (включаючи Linux, але не обмежуючись цим!); якщо і коли ви використовуєте якийсь API Linux, який не стандартизований як частина Posix, у вас буде складніше, коли і коли ви захочете перенести цю програму або бібліотеку в інші системи Unix-y (наприклад, MacOSX) у майбутньому.
Microsoft's market share on desktops, at least, makes it "what the world follows"
- Цікаво відзначити, як багато чого змінилося після цього коментаря з 2009 року :)
Найважливіші речі, які POSIX 7 визначає
Значно розширює ANSI C такими речами, як:
mkdir
, dirname
, symlink
, readlink
, link
() жорсткі посилання, poll()
, stat
, sync
,nftw()
fork
, execl
, wait
, pipe
, semaphors sem_*
, спільна пам'ять ( 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, яка у багатьох випадках просто забезпечує дрібну обгортку для системних викликів.
Наприклад: cd
, ls
, echo
...
Багато утиліт - це прямі передні оболонки оболонки для відповідної функції API 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 (Basic) та ERE (Extended). Basic є застарілим і зберігається лише для того, щоб не порушувати API.
Вони реалізовані за допомогою функцій API API та використовуються у всіх утилітах 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, але майже ніде більше, особливо не в GNU. Але це правда, це занадто обмежувально, наприклад, лише прапорці з однією літерою (наприклад -a
), відсутність подвійних версій з дефісом (наприклад --all
).
Кілька широко використовуваних конвенцій:
-
означає stdin, де очікується файл--
завершує прапори, наприклад, ls -- -l
для переліку каталогу з назвою-l
Дивіться також: Чи існують стандарти для комутаторів і аргументів командного рядка Linux?
"POSIX ACL" (списки контролю доступу), наприклад, як використовується як резервний файл для setfacl
.
Це було вилучено, але воно було реалізовано в декількох ОС, в тому числі в Linux зsetxattr
.
Хто відповідає POSIX?
Багато систем уважно дотримуються POSIX, але мало хто насправді сертифікований Open Group, яка підтримує стандарт. До відомих сертифікованих належать:
Більшість дистрибутивів Linux дуже сумісні, але не сертифіковані, оскільки не хочуть платити за перевірку відповідності. Inspur K-UX та EulerOS компанії Huawei два сертифікованих приклади.
Офіційний список сертифікованих систем можна знайти за посиланням: https://www.opengroup.org/openbrand/register/, а також на сторінці 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.
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 :
POSIX (вимовляється / ˈpɒzɪks /) або «Інтерфейс портативної операційної системи [для Unix]» 1 - назва сімейства відповідних стандартів, визначених IEEE для визначення інтерфейсу програмування прикладних програм (API), а також інтерфейсів оболонки та утиліти для програмного забезпечення сумісний з варіантами операційної системи Unix, хоча стандарт може застосовуватися до будь-якої операційної системи.
В основному це був набір заходів для полегшення болю при розробці та використанні різних ароматів UNIX, маючи (переважно) загальний API та утиліти. Обмежена відповідність POSIX також поширюється на різні версії Windows.
Дозвольте дати чітке "неофіційне" пояснення.
POSIX - це набір стандартів, який намагається відрізнити "UNIX" та UNIX-подібні системи від тих, які з ними несумісні. Він був створений урядом США для цілей закупівель. Ідея полягала в тому, що федеральним закупівлям США потрібен спосіб юридично конкретизувати вимоги до різного роду тендерних пропозицій та контрактів таким чином, щоб вони могли бути використані для виключення систем, до яких дана існуюча база коду чи персонал програмування НЕ переносяться.
Оскільки POSIX був написаний пост-факто ... для опису слабко схожого набору конкуруючих систем ... НЕ було написано способом, який міг бути реалізований.
Так, наприклад, NT Майкрософт був написаний з достатньою кількістю відповідності POSIX, щоб отримати право на деякі ставки ... навіть незважаючи на те, що підсистема POSIX була по суті марною з точки зору практичної портативності та сумісності з системами UNIX.
Протягом десятиліть були написані різні інші стандарти для UNIX. Такі речі, як SPEC1170 (вказано одинадцять сотень сімдесят викликів функцій, які потрібно було реалізувати сумісно) та різні втілення SUS (Єдина специфікація UNIX).
Здебільшого ці "стандарти" були неадекватними будь-якому практичному технічному застосуванню. Вони найбільше існують з аргументації, юридичної суперечки та інших дисфункціональних причин.
POSIX - стандарт для операційних систем, який повинен був полегшити написання кросплатформенного програмного забезпечення. Це особливо велика справа у світі Unix.
POSIX - це набір стандартів, розроблених IEEE та The Open Group, який описує, як ідеально працюватиме Unix. Програмісти, користувачі та адміністратори можуть ознайомитись із документом POSIX та очікують, що POSIX-скарга Unix надасть усі згадані стандартні засоби.
Оскільки кожен Unix робить дещо інакше - Solaris, Mac OS X, IRIX, BSD та Linux, всі свої химерності - POSIX особливо корисний для тих, хто в цій галузі, оскільки він визначає стандартне середовище для роботи. Наприклад, більшість функцій бібліотеки С базуються на POSIX; програміст може, таким чином, використовувати його у своїй програмі та очікувати, що він поводитиметься однаково у більшості Unices.
Однак, як правило, фокус, а не стандартний, розбігаються в Unix.
Чудова річ у POSIX полягає в тому, що ви можете прочитати його самостійно:
Випуск 7 відомий як POSIX.1-2008, і там є нові речі - однак, Google-фу для POSIX.1 і подібного дозволять вам побачити всю історію, за якою є Unix.
У 1985 році люди з компаній у всій галузі комп'ютерної промисловості об'єдналися разом для розробки стандарту POSIX (Портативний інтерфейс операційної системи для комп'ютерних середовищ), який в основному базується на визначенні інтерфейсу UNIX System V (SVID) та інших попередніх зусиллях із стандартизації. Ці зусилля були спонукані урядом США, якому було потрібно стандартне обчислювальне середовище, щоб мінімізувати витрати на навчання та закупівлю. Випущений у 1988 році, POSIX - це група стандартів IEEE, які визначають інтерфейси API, оболонки та утиліти для операційної системи. Хоча стандарти спрямовані на UNIX-подібні системи, стандарти можуть застосовуватися до будь-якої сумісної операційної системи. Тепер, коли ці стандарти отримали прийняття, розробники програмного забезпечення можуть розробляти додатки, які працюють на всіх відповідних версіях UNIX, Linux,
З книги: Практичний посібник з Linux
Posix - це більше як ОС, це "стандарт ОС". Ви можете уявити це як уявну ОС, якої насправді не існує, але вона має документацію. Ці документи є "стандартом позі", визначеним IEEE, яка є великою стандартною організацією США. Операційні ОС, що реалізують цю специфікацію, "сумісні з Posix".
Урядові постанови віддають перевагу Posix-сумісним рішенням у своїх інвестиціях, тому сумісність з Posix має значну фінансову перевагу, особливо для великих ІТ-компаній США.
Нагорода за повну сумісність з ОС, що це гарантія того, що вона буде безперебійно збирати та запускати всі програми, сумісні з Posix.
Linux - найвідоміший. Тут також грають OSX, Solaris, NetBSD та Windows NT. Безкоштовні та OpenBSD лише "майже" сумісні з Posix. Відповідність позіксу WinNT є лише псевдо рішенням, щоб уникнути цього урядового регулювання вище.
Цей стандарт забезпечує загальну основу для Unix-подібних операційних систем. Він визначає, як оболонка повинна працювати, чого очікувати від таких команд, як ls та grep, та ряд бібліотек C, для яких автори C можуть розраховувати.
Наприклад, тут детально вказані труби, якими користуються користувачі командного рядка для з'єднання команд, що означає, що функція Popen (труба відкрита) є стандартом POSIX, а не стандартом ISO C.
POSIX розшифровується як інтерфейс портативної операційної системи і є стандартом IEEE, розробленим для полегшення переносимості додатків. POSIX - це спроба консорціуму постачальників створити єдину стандартну версію UNIX.
POSIX визначає набір стандартів для операційної системи або програми. Мета - написати нове програмне забезпечення, сумісне з UNIX-подібними системами.
Наприклад, програма, запущена на Linux, також може бути компільована та запущена в інших UNIX-подібних системах, таких як Solaris, HP-UX та AIX тощо.
Найпопулярніші приклади - GNU Bash
це 100% відповідність POSIX та gawk
корисність.
Posix керує взаємодією, портативністю та в інших сферах, таких як використання та механізм вилки, дозволи та стандарти файлової системи, такі як / etc, / var, / usr тощо . Отже, коли розробники пишуть програму під сумісну систему Posix, таку як, наприклад, Linux, це, як правило, не завжди, гарантовано працювати в іншій сумісній системі, яка відповідає стандарту Posix, такі як система AIX IBM або інші комерційні варіанти Unix. Posix - це добре, тому що він полегшує розробку програмного забезпечення для максимальної мобільності, до якої прагне. Сподіваюся, що ця відповідь має сенс.
Дякую Jed Smith & Tinkertim за те, що вони вказали на мою помилку - моя погана !!! :(
Специфікація (креслення) про те, як зробити ОС сумісною з пізньою ОС UNIX (нехай Бог благословить його!). Ось чому macOS та GNU / Linux мають дуже схожі термінальні командні рядки, графічний інтерфейс, бібліотеки тощо. Оскільки вони були розроблені згідно з концепцією POSIX.
POSIX не повідомляє інженерам та програмістам, як кодувати, але що кодувати.
Деякі факти про POSIX не такі яскраві.
POSIX - це також інтерфейс системного виклику або API, і йому майже 30 років.
Він був розроблений для серіалізованого доступу до даних до локального сховища , використовуючи одиничні комп'ютери з єдиними процесорами.
Безпека не викликала особливих проблем в POSIX з боку дизайну, що призводило до численних атак на перегони протягом багатьох років і змушувало програмістів працювати над цими обмеженнями.
Серйозні помилки досі виявляються, помилки, які могли бути відвернуті з більш безпечним дизайном POSIX API.
POSIX очікує, що користувачі можуть одночасно робити один синхронний дзвінок і чекати його результатів, перш ніж надсилати наступний. Сьогоднішні програмісти розраховують видати одночасно багато асинхронних запитів, щоб поліпшити загальну пропускну спроможність.
Цей синхронний API особливо поганий для доступу до віддалених та хмарних об'єктів, де важлива висока затримка.