Co oznacza "POSIX"?

Co to jest POSIX? Przeczytałem artykuł Wikipedii i czytam go za każdym razem, gdy spotykam się z tym terminem. Faktem jest, że nigdy nie rozumiałem, co to jest.

Czy ktoś może mi to wyjaśnić wyjaśniając "konieczność stosowania POSIX 'a"?

Author: halfer, 2009-11-23

13 answers

POSIX jest rodziną standardów, określonych przez IEEE, w celu wyjaśnienia i ujednolicenia interfejsów programowania aplikacji (i problemów pomocniczych, takich jak narzędzia powłoki wiersza poleceń) dostarczanych przez systemy operacyjne Unix-y. Kiedy piszesz swoje programy w oparciu o standardy POSIX, możesz być pewien, że będziesz w stanie je łatwo przenieść wśród dużej rodziny pochodnych Uniksa(w tym Linuksa, ale nie tylko!); jeśli i kiedy używasz jakiegoś linuksowego API, które nie standaryzowane jako część Posix, będziesz miał trudniejszy czas, jeśli i kiedy chcesz przenieść ten program lub bibliotekę do innych systemów Unix-y (np. MacOSX) w przyszłości.

 489
Author: Alex Martelli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-23 01:52:19

Najważniejsze rzeczy POSIX 7 definiuje

  1. C API

    Znacznierozszerza ANSI C {[63] } z takimi rzeczami jak:

    • więcej operacji na plikach: mkdir, dirname, symlink, readlink, link (hardlinks), poll, sync
    • proces i wątki: fork, execl, pipe, semafory sem_*, pamięć dzielona (shm_*), kill, parametry harmonogramowania (nice, sched_), sleep
    • networking
    • regular wyrażenia
    • zaawansowane zarządzanie pamięcią: mmap, mlock, mprotect, madvise

    Te API określają również podstawowe pojęcia systemowe, od których zależą, np. fork wymaga koncepcji procesu.

    Istnieje wiele wywołań systemowych Linuksa, aby zaimplementować określoną funkcję API POSIX C i uczynić Linuksa zgodnym, np. sys_write, sys_read, ...

    Główna implementacja pulpitu Linuksa: glibc, która w wielu przypadkach po prostu dostarcza płytkie opakowanie do systemu telefony.

  2. CLI utilities

    E. g.: cd, ls, echo, ...

    Wiele narzędzi jest bezpośrednio przednimi końcami powłoki dla odpowiedniej funkcji C API, np. mkdir.

    Główna implementacja pulpitu Linuksa: GNU Coreutils dla małych, oddzielne projekty GNU dla dużych: sed, grep, awk, ... Niektóre narzędzia CLI są implementowane przez Bash jako wbudowane .

  3. Shell język

    E. g., a=b; echo "$a"

    Główna implementacja pulpitu Linuksa: GNU Bash.

  4. Zmienne środowiskowe

    E. g.: HOME, PATH.

  5. Status zakończenia programu

    ANSI C mówi 0 lub EXIT_SUCCESS za sukces, EXIT_FAILURE za porażkę i pozostawia resztę implementacji zdefiniowaną.

    POSIX dodaje:

  6. Wyrażenie regularne

    Istnieją dwa typy: Bre (podstawowy) i ERE (Rozszerzony). Basic jest przestarzały i przechowywany tylko po to, aby nie łamać interfejsów API.

    Są one implementowane przez C API funkcje i używane w narzędziach CLI, np. grep domyślnie akceptuje BREs, a EREs z -E.

    E. g.: echo 'a.1' | grep -E 'a.[[:digit:]]'

    Główna implementacja Linuksa: glibc implementuje funkcje pod regex .h które programy jak grep mogą używać jako backend.

  7. Directory struture

    E. g.: /dev/null, /tmp

    Linux FHS znacznie rozszerza POSIX.

  8. Nazwy plików

    • / jest separatorem ścieżek
    • NUL nie można użyć
    • . jest cwd, .. rodzic
    • przenośne nazwy plików
      • użyj maksymalnie 14 znaków i 256 dla pełnej ścieżki
      • może zawierać tylko: a-zA-Z0-9._-

    Zobacz także: jaka jest zgodność posix dla systemu plików?

  9. Command line utility API konwencje

    Nieobowiązkowy, używany przez POSIX, ale prawie nigdzie indziej, zwłaszcza w GNU. Ale to prawda, że jest zbyt restrykcyjne, np. tylko flagi jednoliterowe( np. -a), brak podwójnych wersji myślników (np. --all).

    Kilka powszechnie używanych konwencji:

    • - oznacza stdin, gdzie oczekuje się Pliku
    • -- kończy flagi, np. ls -- -l aby wyświetlić katalog o nazwie -l

    Zobacz także: Czy istnieją standardy poleceń Linuksa przełączniki linii i argumenty?

Kto jest zgodny z POSIX?

Wiele systemów ściśle przestrzega standardu POSIX, ale niewiele z nich jest certyfikowanych przez Open Group, która utrzymuje ten standard. Do najważniejszych certyfikowanych należą:

  • OS X (Apple) x oznacza zarówno 10, jak i UNIX. Był pierwszym systemem POSIX firmy Apple, wydanym około 2001 roku. Zobacz też: czy OSX to POSIX OS?
  • AIX (IBM)
  • HP-UX (HP)
  • Solaris (Oracle)

Większość dystrybucji Linuksa jest bardzo zgodna, ale nie certyfikowana, ponieważ nie chce płacić kontroli zgodności.

Zobacz stronę wiki .

Okna

Windows zaimplementował POSIX na niektórych swoich profesjonalnych dystrybucjach.

Ponieważ była to funkcja opcjonalna, programiści nie mogli na niej polegać w większości aplikacji użytkowników końcowych.

W systemie Windows 8 wsparcie zostało wycofane:

W 2016 roku ogłoszono nowe oficjalne API podobne do Linuksa o nazwie "Podsystem Windows dla Linuksa". Zawiera on wywołania systemu Linux, uruchamianie ELF, części /proc filesystem, Bash, GCC, (TODO prawdopodobnie glibc?), apt-get i więcej: https://channel9.msdn.com/Events/Build/2016/P488 więc wierzę, że pozwoli to Windows uruchomić wiele, jeśli nie wszystkie, POSIX. Jednak koncentruje się na programistach / wdrożeniach zamiast na użytkownikach końcowych. W szczególności nie było planów zezwalania na dostęp do interfejsu graficznego systemu Windows.

[[60]}historyczny przegląd oficjalnej zgodności Microsoft POSIX: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/

Cygwin jest dobrze znanym projektem innej firmy GPL, który "zapewnia znaczną funkcjonalność interfejsu POSIX API" dla systemu Windows, ale wymaga, aby "przebudować aplikację ze źródła, jeśli chcesz, aby działała w systemie Windows". MSYS2 jest pokrewnym projektem, który wydaje się dodawać więcej funkcjonalności do Cygwina.

Android

Android ma swój własny C biblioteka (Bionic), która nie obsługuje w pełni POSIX od wersji Android O: czy Android jest zgodny z POSIX?

Poziom bonusowy

Baza Linux Standard Base dodatkowo rozszerza POSIX.

Użyj indeksów bez ramek, są one znacznie bardziej czytelne i przeszukiwalne: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

Pobierz pełną skompresowaną wersję stron HTML do greppingu: czy istnieje lista API POSIX / funkcje?

 367
Author: Ciro Santilli 新疆改造中心 六四事件 法轮功,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-05 13:04:02

POSIX to:

POSIX (wymawiane /ˈpɒzksks/) lub "Portable Operating System Interface [Dla Unix]"1 to nazwa rodziny związanych z normami określonymi przez IEEE do zdefiniowania aplikacji interfejs programowania (API), wraz z interfejsami shell i utilities dla oprogramowania kompatybilnego z wariantami systemu operacyjnego Unix, chociaż norma może dotyczyć każdego system operacyjny.

W zasadzie był to zestaw środków aby ułatwić rozwój i korzystanie z różnych smaków Uniksa poprzez posiadanie (głównie) wspólnego API i narzędzi. Ograniczona zgodność z POSIX rozszerzyła się również na różne wersje systemu Windows.

 61
Author: cletus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-23 00:44:57

Pozwól, że podam wulgarne "nieoficjalne" Wyjaśnienie.

POSIX jest zbiorem standardów, które próbują odróżnić systemy "uniksowe" i UNIKSOPODOBNE od tych, które są z nimi niezgodne. Został stworzony przez rząd USA dla celów zamówień publicznych. Pomysł polegał na tym, że amerykańskie zamówienia federalne potrzebowały sposobu, aby zgodnie z prawem określić wymagania dla różnego rodzaju ofert i umów w sposób, który mógłby być użyty do wykluczenia systemów, do których dana istniejąca baza kodów lub personel programistyczny nie byłby przenośny.

Ponieważ POSIX został napisany post facto ... aby opisać luźno podobny zestaw konkurencyjnych systemów ... nie został napisany w sposób, który mógłby zostać zaimplementowany.

Więc, na przykład, Microsoft NT został napisany z wystarczającą zgodnością POSIX, aby zakwalifikować się do niektórych ofert ... mimo że podsystem POSIX był zasadniczo bezużyteczny pod względem praktycznej przenośności i kompatybilności z systemami UNIX.

Różne inne standardy Uniksa mają został napisany przez dziesięciolecia. Rzeczy takie jak SPEC1170 (określona jedenastu sto siedemdziesiąt funkcji, które musiały być zaimplementowane kompatybilnie) i różne wcielenia sus (Single UNIX Specification).

W większości przypadków te "normy" były nieodpowiednie do jakiegokolwiek praktycznego zastosowania technicznego. Większość z nich istnieje z powodu argumentacji, sporów prawnych i innych dysfunkcyjnych powodów.

 38
Author: Jim Dennis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-09 04:02:41

POSIX jest zestawem standardów opracowanych przez IEEE i Open Group, który opisuje, w jaki sposób idealny Uniks miałby działać. Programiści, użytkownicy i administratorzy mogą zapoznać się z dokumentem POSIX i oczekiwać, że Uniks ze skargami POSIX zapewni wszystkie wymienione standardowe udogodnienia.

Ponieważ każdy Unix robi coś nieco inaczej -- Solaris, Mac OS X, IRIX, BSD i Linux mają swoje dziwactwa -- POSIX jest szczególnie przydatny dla tych w branży, ponieważ definiuje Standardowe środowisko pracy. Na przykład, większość funkcji w bibliotece C opiera się na POSIX; programista może więc użyć jednej z nich w swojej aplikacji i oczekiwać, że będzie ona zachowywać się tak samo na większości Unices.

Jednak rozbieżne obszary Uniksa są zazwyczaj skupione, a nie standardowe.

Wspaniałą rzeczą w POSIX jest to, że możesz ją przeczytać samodzielnie:

Wydanie Specyfikacji Open Group Base 7

Wydanie 7 jest znane jako POSIX.1-2008 i są tam nowe rzeczy-jednak Google-fu dla POSIX.1 i takie pozwoli Ci zobaczyć całą historię stojącą za tym, czym jest Unix.

 28
Author: Jed Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-23 00:53:32

POSIX jest standardem dla systemów operacyjnych, który miał ułatwić pisanie oprogramowania wieloplatformowego. Jest to szczególnie ważna sprawa w świecie Uniksa.

 23
Author: Hank Gay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-23 00:44:41
W 1985 roku osoby z firm z branży komputerowej połączone w celu opracowania POSIX (Portable Operating System Interfejs dla środowisk komputerowych) standard, który opiera się w dużej mierze na UNIX System V Interface Definition (SVID) i innych wcześniejszych wysiłki normalizacyjne. Wysiłki te były stymulowane przez USA. rząd, który potrzebował standardowego środowiska obliczeniowego, aby zminimalizować koszty szkoleń i zamówień. Wydany w 1988 roku, POSIX jest Grupa standardów IEEE definiujących interfejsy API, powłoki i narzędzi dla systemu operacyjnego. Chociaż skierowany jest do systemów uniksopodobnych, standardy mogą mieć zastosowanie do każdego zgodnego systemu operacyjnego. Teraz, że te stan-dards zyskały akceptację, programiści są w stanie tworzenie aplikacji, które działają na wszystkich zgodnych wersjach Uniksa, Linux i inne systemy operacyjne.

Z książki: praktyczny przewodnik po Linuksie

 4
Author: Koray Tugay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-27 19:14:43

Ten standard stanowi wspólną podstawę dla uniksopodobnych systemów operacyjnych. Określa, jak powinna działać powłoka, czego można oczekiwać od poleceń takich jak ls i grep, a także szereg bibliotek C, których autorzy mogą się spodziewać.

Na przykład, rury, których użytkownicy linii poleceń używają do łączenia poleceń są tutaj szczegółowo określone, co oznacza, że funkcja popen (pipe open) C jest standardem POSIX, a nie ISO C-standardem.

 2
Author: Koray Tugay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-14 10:56:49

Posix jest bardziej jako OS, jest "standardem OS". Możesz sobie wyobrazić go jako wyimaginowany system operacyjny, który w rzeczywistości nie istnieje, ale ma dokumentację. Dokumenty te są "standardem posix", zdefiniowanym przez IEEE, która jest wielką organizacją standardową w USA. Osy implementujące tę specyfikację są "zgodne z Posix".

Regulacje rządowe preferują rozwiązania zgodne z Posix w swoich inwestycjach, dzięki czemu zgodność z Posix ma znaczną przewagę finansową, szczególnie dla dużych firm informatycznych w USA.

Nagroda za to, że system operacyjny jest w pełni zgodny z posix, że jest gwarancją, że będzie bezproblemowo kompilował i uruchamiał wszystkie aplikacje zgodne z Posix.

Linux jest najbardziej znanym. Tu też grają OSX, Solaris, NetBSD i Windows NT. Free - I OpenBSD są tylko" prawie " zgodne z Posix. Zgodność z posix WinNT jest tylko pseudo-rozwiązaniem, aby uniknąć powyższej regulacji rządowej.

 2
Author: peterh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-17 02:08:08

POSIX definiuje zestaw standardów dla systemu operacyjnego lub programu. Celem jest napisanie nowego oprogramowania kompatybilnego z systemami UNIKSOPODOBNYMI.

Na przykład program działający pod Linuksem może być również kompilowany i uruchamiany na innych systemach uniksopodobnych, takich jak Solaris, HP-UX, AIX itp..

Najpopularniejszymi przykładami są GNU Bash, które jest w 100% zgodne z POSIX i gawk utility.

 0
Author: sras,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-13 12:12:05

Posix reguluje interoperacyjność, przenośność i w innych obszarach, takich jak użycie i mechanizm fork, uprawnienia i standardy systemów plików, takie jak /etc, /var, /usr i tak dalej . Dlatego, gdy programiści piszą program pod systemem zgodnym z Posix, takim jak na przykład Linux, zazwyczaj nie zawsze jest gwarantowane działanie na innym systemie zgodnym z posix, takim jak system AIX IBM lub inne komercyjne warianty Uniksa. Posix jest dobrą rzeczą, aby mieć jako takie ułatwia oprogramowanie rozwój dla maksymalnej przenośności, do której dąży. Mam nadzieję, że ta odpowiedź ma sens.

Podziękowania dla Jed Smith & Tinkertim za wskazanie mojego błędu - mój błąd!!! :(

 0
Author: t0mm13b,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-07 18:18:58

Specyfikacja (blueprint) o tym, jak zrobić OS kompatybilny z późnym UNIX OS (niech Bóg go błogosławi!). To dlatego macOS i GNU/Linux mają bardzo podobne linie komend terminala, GUI, biblioteki itp. Ponieważ oba zostały zaprojektowane zgodnie ze schematem POSIX.

POSIX nie mówi inżynierom i programistom jak kodować, ale co kodować.

 0
Author: MCH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-25 09:25:04

Kilka faktów o POSIX, które nie są tak jasne.

POSIX jest również interfejsem wywołania systemowego lub API i ma prawie 30 lat.

[[0]}został zaprojektowany dla serializowanego dostępu do lokalnej pamięci masowej , przy użyciu pojedynczych komputerów z pojedynczymi procesorami.

Bezpieczeństwo nie było głównym problemem w projekcie POSIX, co prowadziło do licznych ataków typu race condition na przestrzeni lat i zmuszało programistów do obejścia tych ograniczeń.

Poważne błędy wciąż są wykryte błędy mogły zostać wyeliminowane dzięki bezpieczniejszemu projektowi interfejsu API POSIX.

POSIX oczekuje, że użytkownicy będą wysyłać jedno synchroniczne wywołanie naraz i czekać na jego wyniki przed wydaniem następnego. Dzisiejsi Programiści oczekują, że będą wysyłać wiele żądań asynchronicznych jednocześnie, aby poprawić ogólną przepustowość.

Ten synchroniczny API jest szczególnie zły dla dostępu do obiektów zdalnych i chmurowych, gdzie duże opóźnienia mają znaczenie.

 0
Author: prosti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-27 10:05:56