Jakie jest znaczenie „POSIX”?

Odpowiedzi:

622

POSIX to rodzina standardów określonych przez IEEE w celu wyjaśnienia i ujednolicenia interfejsów programowania aplikacji (oraz 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 łatwo przenieść je do dużej rodziny pochodnych Uniksa (w tym Linuksa, ale nie tylko!); jeśli i kiedy użyjesz Linuksowego API, który nie jest znormalizowany jako część Posix, będziesz miał trudniejszy czas, jeśli i kiedy będziesz chciał przenieść ten program lub bibliotekę do innych systemów Unix-y (np. MacOSX) w przyszłości.

Alex Martelli
źródło
34
Nie, standard jest na poziomie API - każde określone wywołanie może być zaimplementowane w jądrze lub w bibliotece C pod względem innego wywołania, i to jest w porządku dla Posix (i dla twoich programów ;-). MacOSX jest zgodny z Posix, patrz devworld.apple.com/leopard/overview/osfoundations.html . W przypadku systemu Windows patrz en.wikipedia.org/wiki/POSIX#POSIX_for_Windows : Zgodność z Posix jest obecnie uwzględniona tylko w wersjach Enterprise i Ultimate (nie w tańszych! -), choć można uzyskać częściowo w / Cygwin, en.wikipedia. org / wiki / Cygwin .
Alex Martelli
23
Twój komentarz jest błędny, ponieważ przynajmniej udział Microsoft w rynku komputerów stacjonarnych sprawia, że ​​jest „tym, co podąża świat”.
Jed Smith
29
Myślę, że chodziło o to, że Microsoft nie wkłada wiele wysiłku w to, aby być interoperacyjnym z innymi platformami.
mipadi
12
@deltaray obejmuje, przedłuża i gaśnie . MS java (niestandardowy java.util. Java.security, java.io, java.lang i java.awt), Internet Explorer (prawie powiedział „Exploder”) i .NET (tak, wiem, że wydali częściowo źródło .NET, ale jego licencja jest restrykcyjna i NIE jest jeszcze portem Linux. Mono jest niekompletny). Również patenty exFAT . Masz absolutną rację.
Wyatt8740
25
Microsoft's market share on desktops, at least, makes it "what the world follows"- Interesujące jest odnotowanie, jak wiele zmieniło się od tego komentarza z 2009 roku :)
GMA,
515

Najważniejsze rzeczy, które definiuje POSIX 7

  1. C API

    Znacznie rozszerza ANSI C o takie rzeczy jak:

    • więcej operacji na plikach: mkdir, dirname, symlink, readlink, link(hardlinki), poll(), stat, sync,nftw()
    • przetwarzanie i nici: fork, execl, wait, pipe, semaphors sem_*, wspólna pamięć ( shm_*) kill, parametrów harmonogramu ( nice, sched_*) sleep, mkfifo,setpgid()
    • sieć: socket()
    • Zarządzanie pamięcią: mmap, mlock, mprotect, madvise,brk()
    • narzędzia: wyrażenia regularne ( reg*)

    Te interfejsy API określają również podstawowe koncepcje systemu, od których są zależne, np. forkWymagają koncepcji procesu.

    Wiele wywołania systemowe Linux istnieje do realizacji konkretnej funkcji API POSIX C i uczynić zgodny Linux, na przykład sys_write, sys_read... Wiele z tych syscalli również specyficzne dla Linuksa rozszerzeń jednak.

    Główna implementacja pulpitu Linux: glibc, który w wielu przypadkach zapewnia płytkie opakowanie dla wywołań systemowych.

  2. Narzędzia CLI

    Np: cd, ls, echo, ...

    Wiele narzędzi to bezpośrednie interfejsy powłoki dla odpowiedniej funkcji API C, np mkdir.

    Główne Linux realizacja pulpit: GNU Coreutils dla małych, oddzielnych Projekt GNU dla tych dużych: sed, grep, awk, ... Niektóre narzędzia CLI są realizowane przez Bash jako wbudowanych wtyczek .

  3. Język powłoki

    Na przykład, a=b; echo "$a"

    Główne implementacje pulpitu Linux: GNU Bash .

  4. Zmienne środowiska

    Np .: HOME, PATH.

    PATH semantyka wyszukiwania jest określona , w tym sposóbPATH , w jaki ukośniki uniemożliwiają wyszukiwanie .

  5. Status wyjścia z programu

    ANSI C mówi 0lub EXIT_SUCCESSdla sukcesu, EXIT_FAILUREdla niepowodzenia i pozostawia zdefiniowaną resztę implementacji.

    POSIX dodaje:

  6. Wyrażenie regularne

    Istnieją dwa typy: BRE (podstawowy) i ERE (rozszerzony). Podstawowy jest przestarzały i jest przechowywany tylko po to, by nie łamać interfejsów API.

    Są one implementowane przez funkcje C API i używane w narzędziach CLI, np. grepDomyślnie akceptują BRE, a ERE z -E.

    Na przykład: echo 'a.1' | grep -E 'a.[[:digit:]]'

    Ważna implementacja Linuksa: glibc implementuje funkcje w regex.h, których programy grepmogą używać jako backend.

  7. Struktura katalogów

    Np /dev/null,/tmp

    Linux FHS znacznie rozszerza POSIX.

  8. Nazwy plików

    • / jest separatorem ścieżki
    • NUL nie może być użyty
    • .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: czym jest zgodność posix dla systemu plików?

  9. Konwencje API narzędzi wiersza poleceń

    Nieobowiązkowe, używane przez POSIX, ale prawie nigdzie indziej, zwłaszcza nie w GNU. Ale to prawda, jest zbyt restrykcyjne, np. Tylko flagi z jedną literą (np. -a), Brak podwójnych długich łączników (np --all.).

    Kilka powszechnie stosowanych konwencji:

    • - oznacza standardowe wejście, w którym oczekiwany jest plik
    • --kończy flagi, np. ls -- -laby wyświetlić katalog o nazwie-l

    Zobacz także: Czy istnieją standardy dotyczące przełączników i argumentów wiersza poleceń systemu Linux?

  10. „POSIX ACL” (listy kontroli dostępu), np. Używane jako backend dla setfacl.

    Zostało to wycofane, ale zostało zaimplementowane w kilku systemach operacyjnych, w tym w systemie Linux zsetxattr .

Kto jest zgodny z POSIX?

Wiele systemów ściśle przestrzega POSIX, ale niewiele z nich jest certyfikowanych przez Open Group, która utrzymuje ten standard. Godne uwagi certyfikowane obejmują:

  • OS X (Apple) X oznacza zarówno 10, jak i UNIX. Był to pierwszy system Apple POSIX, wydany około 2001 roku. Zobacz także: Czy OSX jest systemem POSIX?
  • AIX (IBM)
  • HP-UX (HP)
  • Solaris (Oracle)

Większość dystrybucji Linuksa jest bardzo zgodna, ale nie ma certyfikatu, ponieważ nie chcą płacić za sprawdzenie zgodności. Inspur K-UX i Huawei EulerOS to dwa certyfikowane przykłady.

Oficjalna lista certyfikowanych systemów znajduje się na stronie : https://www.opengroup.org/openbrand/register/, a także na stronie wiki .

Windows

System Windows wdrożył POSIX w niektórych swoich profesjonalnych dystrybucjach.

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

Wsparcie zostało wycofane w Windows 8:

W 2016 r. Ogłoszono nowy oficjalny interfejs API podobny do systemu Linux o nazwie „Windows Subsystem for Linux”. Obejmuje wywołania systemowe Linux, uruchamianie ELF, części /procsystemu plików, Bash, GCC, (TODO prawdopodobnie glibc?) apt-getI więcej: https://channel9.msdn.com/Events/Build/2016/P488, więc uważam, że to pozwoli Windowsowi 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 zezwolenia na dostęp do GUI systemu Windows.

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

Cygwin jest dobrze znanym projektem firmy GPL, który „zapewnia znaczną funkcjonalność interfejsu API POSIX” dla systemu Windows, ale wymaga „przebudowania aplikacji ze źródła, jeśli chcesz, aby działała w systemie Windows”. MSYS2 to pokrewny projekt, który wydaje się dodawać więcej funkcji na Cygwin.

Android

Android ma własną bibliotekę C (Bionic), która nie w pełni obsługuje POSIX od Androida O: Czy Android jest zgodny z POSIX?

Poziom bonusowy

Linux Standard Base rozszerza POSIX.

Użyj indeksów innych niż ramki, są one znacznie bardziej czytelne i można je wyszukiwać: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

Pobierz pełną wersję zip stron HTML do grepping: Gdzie jest lista funkcji API POSIX C?

Ciro Santilli
źródło
17
Fantastyczne przykłady, jeśli masz definicję tak samo jak zaakceptowaną odpowiedź, byłaby to najlepsza odpowiedź.
Marc
8
@Marc dzięki! Staram się nie powtarzać tego, co zostało powiedziane w innych odpowiedziach, ponieważ ludzie prawdopodobnie już je przeczytali i aby uniknąć powielania ;-) To znany dylemat: meta.stackoverflow.com/questions/305645/...
Ciro Santilli 冠状 病毒 审查 六四法轮功 法轮功
1
Dobry pomysł, aby faktycznie wyjaśnić, co obejmuje POSIX (a co nie).
sleske
4
Wszędzie w literaturze pojawiają się odniesienia do „zgodności z POSIX”, a typową definicją POSIX-a jest „zestaw standardów interoperacyjności między systemami operacyjnymi podobnymi do Uniksa”. Choć przydatna, ta definicja pozostawia wiele wątpliwości, szczególnie w odniesieniu do funkcji, które mają współpracować. Jasne, możesz przejść i przeczytać całą specyfikację POSIX, aby zagłębić się w szczegóły (i poświęcić na to dużo czasu). Ale ta odpowiedź zawiera bardzo potrzebne podsumowanie, aby uzyskać pełny obraz zakresu POSIX. Specjalne podziękowania dla Ciro za poświęcenie czasu na napisanie go!
ARX
Warto również dodać gwarancje Posix dotyczące typów całkowitych. Nie wiem dokładnie, co jest i nie jest określone, ale wiem, że przynajmniej Posix wymaga istnienia uint8_t, uint16_t, uint32_t i odpowiednich podpisanych typów. Nie jestem pewien, czy gwarantuje to, że typy takie jak „int” mają potęgę dwóch rozmiarów i że system nie zrobi czegoś paskudnego, jak „int” z 32 bitami wartości, 1 bitem znaku i 31 bitami wypełniającymi [więc zwiększenie wartości uint32_t może spowodować UB]; jeśli masz pod ręką Standard, może być miło powiedzieć, co jest i nie jest gwarantowane w tym zakresie.
supercat
74

POSIX to:

POSIX (wymawiane / ˈpɒzɪks /) lub „Interfejs przenośnego systemu operacyjnego [dla Uniksa]” 1 to nazwa rodziny powiązanych standardów określonych przez IEEE w celu zdefiniowania interfejsu programowania aplikacji (API), wraz z interfejsami powłoki i narzędzi dla oprogramowania kompatybilny z wariantami systemu operacyjnego Unix, chociaż standard może dotyczyć dowolnego systemu operacyjnego.

Zasadniczo był to zestaw środków mających na celu złagodzenie bólu związanego z rozwojem i wykorzystaniem różnych smaków UNIX poprzez posiadanie (głównie) wspólnego API i narzędzi. Ograniczona zgodność z POSIX została również rozszerzona na różne wersje systemu Windows.

Cletus
źródło
1. Masz na myśli, że POSIX mówi, że wszystkie systemy operacyjne * nix (jądra) powinny mieć co najmniej ten zestaw wywołań systemowych. dobrze? 2. Czy WINDOWS / MAC stosuje POSIX? Jeżeli / Ifnot czy WINDOWS (95,98,2000, XP, Vista, 7) stosuje jakiś wspólny standard (może być ich własnym) standardem? Innymi słowy, POSIX w świecie Microsoft ==?
pazury
1
Zasadniczo był to „zestaw” środków łagodzących ból rozwojowy. BYŁ??
pazury
5
Poddałem użycie słowa było też, ale to jest dyskusyjna. Aby odpowiedzieć na twoje pytania: (1) nie, POSIX ma absolutnie zilch do czynienia z jądrem, po prostu opisuje, jak powinien działać; (2) OS X jest BSD i jest całkiem zgodny z POSIX, ale są szare obszary. Windows 2008 jest najbliżej skargi POSIX; w świecie Microsoft nie ma odpowiednika POSIX.
Jed Smith
1
@claws: Nie chcę brudzić obszaru pod odpowiedzią Cletusa ... ale. Połączyłem POSIX.1-2008 w mojej odpowiedzi ... właśnie tam.
Jed Smith
3
@Jed Smith, nie ma szarych obszarów pod względem zgodności z Mac OS X; Mac OS X posiada certyfikat zgodności ze specyfikacją Single UNIX Specification v3, której standardem jest POSIX.
Michael Aaron Safyan
43

Pozwólcie, że udzielę churalistycznego „nieoficjalnego” wyjaśnienia.

POSIX to zestaw standardów, które próbują odróżnić „UNIX” i systemy podobne do UNIX od tych, które są z nimi niezgodne. Został stworzony przez rząd USA na potrzeby zakupów. Pomysł polegał na tym, że amerykańskie zamówienia federalne potrzebowały sposobu prawnego określenia wymagań dla różnego rodzaju ofert i umów w sposób, który mógłby zostać wykorzystany do wykluczenia systemów, do których dana istniejąca baza kodu lub pracownicy programistyczni NIE byliby przenośni.

Ponieważ POSIX został napisany po fakcie ... aby opisać luźno podobny zestaw konkurujących systemów ... NIE został napisany w sposób, który mógłby zostać zaimplementowany.

Na przykład Microsoft NT napisano z wystarczającą zgodnością POSIX, aby kwalifikować się do niektórych ofert ... nawet jeśli podsystem POSIX był zasadniczo bezużyteczny pod względem praktycznej przenośności i kompatybilności z systemami UNIX.

Różne inne standardy dla UNIX zostały napisane przez dziesięciolecia. Rzeczy takie jak SPEC1170 (określono jedenaście siedemdziesiąt siedem wywołań funkcji, które musiały być kompatybilnie zaimplementowane) i różne wcielenia SUS (pojedyncza specyfikacja UNIX).

W przeważającej części te „normy” były nieodpowiednie do jakiegokolwiek praktycznego zastosowania technicznego. Większość z nich istnieje dla argumentacji, kłótni prawnych i innych dysfunkcyjnych powodów.

Jim Dennis
źródło
1
Dlaczego więc Linux implementuje większość POSIX, w tym wiele rozszerzeń?
ninjalj
8
@ninjalj: Linux został napisany w celu zaimplementowania praktycznego zestawu funkcji podobnych do systemu UNIX. Postępowanie zgodne z POSIX ma sens. Chodziło mi jednak o to, że POSIX nie został stworzony jako specyfikacja implementacji nowych systemów operacyjnych ... został stworzony jako sposób na to, aby pracownicy rządowi USA mogli odróżnić te, które zakwalifikowały się do niektórych kategorii ofert od tych, które nie byłyby . Linux koncentruje się na zapewnieniu użytecznych funkcji w sposób, który jest rozsądnie zgodny, niezawodny i wydajny. Po drodze POSIX nie jest przypadkiem.
Jim Dennis
3
Raczej genialnie z twojej strony, twierdząc, że POSIX został napisany post facto! Jest to znak rozpoznawczy organizacji opracowującej dobre standardy (SDO), w której nie osiąga się konsensusu, dopóki nie powstanie przynajmniej jedna implementacja zgodna.
fpmurphy 10.03.11
4
@fpmurphy: Tworzenie specyfikacji ex post w oparciu o jedną lub dwie interoperacyjne implementacje jest normą dla standardów protokołu sieciowego IETF ..., które oddziałują na celowo luźne połączenia. Proces standaryzacji systemu operacyjnego nie był udany. Interfejs API między programami a systemem (jądro lub mikrojądro i jego serwery podsystemu) jest znacznie ściślej sprzężony niż klienci i serwery lub równorzędne sieci. (Nie twierdzę, że jest to niemożliwe; po prostu wskazuję, że istnieją różnice, a historia nie pokazała, że ​​jest to obiecujące).
Jim Dennis,
2
Wysiłki IEEE zmierzające do określenia POSIX w 1985 r. Zostały zainspirowane przez rząd USA. Przeprowadź badania, przeczytaj książkę historyczną lub coś takiego.
rustyx
29

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.

Hank Gay
źródło
15
Nie tylko „ma to” ułatwić pisanie kodu między platformami, ale ułatwia pisanie kodu między platformami. Jedynym wyjątkiem jest system Windows, ponieważ Microsoft uważa, że ​​jest on w jakiś sposób lepszy niż wszyscy inni i nie musi się do niego stosować. Jednak przewiduję, że to zadziała przeciwko nim, zwłaszcza że Mac i Linux zdobywają większy udział w rynku. Jeśli tak naprawdę są dla „programistów, programistów, programistów”, zdadzą sobie sprawę, że programiści chcą zgodności z UNIX.
Michael Aaron Safyan
W oparciu o to, co usłyszałem od ludzi, którzy pracują z nim o wiele bliżej niż kiedykolwiek wcześniej, mogło to ułatwić, ale z pewnością nie wystarczyło do wyświetlenia w trybie POSIX po jednorazowym zapisie ludzie dostają, gdy słyszą, że jest to „standard” dla systemów operacyjnych.
Hank Gay
6
Nie myślą, że są „lepsi niż wszyscy inni”; wiedzą, że są większe niż wszyscy inni. Dlatego też zmieniają melodię, gdy tracą udział w rynku. Nie jest to dla nich wyjątkowe, np. Netscape zaczął bardziej dbać o standardy sieciowe, kiedy nie były już najpopularniejsze.
Ken
Napisanie aplikacji do używania tylko interfejsów API POSIX znacznie ułatwia portowanie między różnymi systemami operacyjnymi Unix i Unix podobnymi. Jest to jednak najniższy wspólny standard konsensusowy mianownika - więc narzędzia lub aplikacje, które są specyficzne dla systemu operacyjnego lub sprzętu, zwykle wymagają pewnego przepisania.
fpmurphy 10.03.11
2
@Ken i dlatego nie powinniśmy pozwolić, aby chrom Google stał się zbyt wygodny.
Wyatt8740
29

POSIX to zestaw standardów przedstawionych przez IEEE i The Open Group, które opisują, jak powinien funkcjonować idealny uniks. Programiści, użytkownicy i administratorzy mogą wszyscy zapoznać się z dokumentem POSIX i oczekiwać, że Unix z reklamacjami POSIX zapewni wszystkie wspomniane 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 osób w branży, ponieważ określa standardowe środowisko działania. Na przykład większość funkcji w bibliotece C jest oparta na POSIX; programista może zatem użyć jednego w swojej aplikacji i oczekiwać, że będzie on zachowywał się tak samo w większości Uniksów.

Jednak rozbieżne obszary Uniksa są zazwyczaj w centrum uwagi, a nie standardowe.

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

Podstawowa specyfikacja Open Group Issue 7

Problem 7 jest znany jako POSIX.1-2008 i są w nim nowe rzeczy - jednak Google-fu dla POSIX.1 i takie pozwoli ci zobaczyć całą historię stojącą za Unixem.

Jed Smith
źródło
2
Myślę, że niepoprawnie używasz terminu „UNIX”. UNIX odnosi się teraz do pojedynczej specyfikacji UNIX, a każdy system operacyjny UNIX jest systemem operacyjnym zgodnym ze specyfikacją pojedynczego UNIX. Być może masz na myśli system UNIX?
Michael Aaron Safyan
8
@Michael: Biorąc pod uwagę twoje komentarze w innych odpowiedziach, jesteś oczywiście bardzo spolaryzowaną osobą z opiniami, które nie są do końca konstruktywne. Ten konkretny komentarz jest bardzo pedantyczny, a moje znaczenie zostało przekazane niezależnie od wyboru etykiety, z którą możesz się nie zgodzić. Ponadto system Windows jest zgodny z POSIX w wyższych wersjach. Odetchnij i cofnij się, proszę.
Jed Smith
1
@Jed Smith, poza silnymi opiniami, implikacją tego postu jest to, że niektóre systemy operacyjne, które są certyfikowane jako zgodne z UNIXem, nie są ... więc myślę, że uczciwie jest powiedzieć, że to wprowadza w błąd. Ponadto w odniesieniu do systemu Windows, o ile istnieją wersje niezgodne, programiści nie mogą polegać na POSIX podczas atakowania na platformę Windows, tym samym negując cały cel posiadania POSIX.
Michael Aaron Safyan,
Unix to system operacyjny. UNIX to marka należąca do The Open Group. Systemy certyfikowane na profile marki UNIX95, UNIX98 lub UNIX03, których zgodność z określoną wersją specyfikacji pojedynczego UNIX stanowi większość wymagań dotyczących marki, mogą używać terminu UNIX.
fpmurphy 10.03.11
6

W 1985 r. Osoby z firm z branży komputerowej połączyły się, aby opracować standard POSIX (Portable Operating System Interface for Computer Environments), który jest oparty w dużej mierze na definicji interfejsu V systemu UNIX (SVID) i innych wcześniejszych działaniach normalizacyjnych. Wysiłki te zostały pobudzone przez rząd USA, który potrzebował standardowego środowiska komputerowego, aby zminimalizować koszty szkolenia i zamówień. Wydany w 1988 roku POSIX to grupa standardów IEEE, które definiują interfejs API, powłokę i interfejsy narzędziowe dla systemu operacyjnego. Chociaż dotyczy systemów typu UNIX, standardy mogą mieć zastosowanie do każdego kompatybilnego systemu operacyjnego. Teraz, gdy standardy te zyskały akceptację, twórcy oprogramowania mogą tworzyć aplikacje działające na wszystkich zgodnych wersjach UNIX, Linux,

Z książki: Praktyczny przewodnik po systemie Linux

Koray Tugay
źródło
4

Posix to bardziej system operacyjny, to „standard systemu operacyjnego”. Możesz to sobie wyobrazić jako wyimaginowany system operacyjny, który tak naprawdę nie istnieje, ale ma dokumentację. Dokumenty te są „standardem POSIX”, zdefiniowanym przez IEEE, która jest dużą standardową organizacją w USA. Systemy operacyjne implementujące tę specyfikację są „zgodne z Posix”.

Przepisy rządowe preferują rozwiązania zgodne z Posix w swoich inwestycjach, dlatego zgodność z Posix ma znaczącą przewagę finansową, szczególnie dla dużych firm informatycznych w USA.

Nagroda za to, że system operacyjny jest w pełni zgodny z POSIX-em, to gwarancja, że ​​skompiluje i uruchomi bezproblemowo wszystkie aplikacje zgodne z Posix.

Linux jest najbardziej znany. Tutaj także 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.

peterh - Przywróć Monikę
źródło
3

Ten standard stanowi wspólną podstawę dla systemów operacyjnych typu Unix. Określa, jak powinna działać powłoka, czego można się spodziewać po poleceniach takich jak ls i grep, a także szereg bibliotek C, których autorzy C mogą oczekiwać, że będą dostępni.

Na przykład, potoki, których użytkownicy wiersza poleceń używają do łączenia ze sobą poleceń, są tutaj szczegółowo określone, co oznacza, że ​​popen (otwieranie potoku) C jest standardem POSIX, a nie standardem ISO C.

Koray Tugay
źródło
3

POSIX oznacza przenośny interfejs systemu operacyjnego i jest standardem IEEE zaprojektowanym w celu ułatwienia przenoszenia aplikacji. POSIX jest próbą konsorcjum dostawców, aby stworzyć jedną standardową wersję UNIX.

Farruh Habibullaev
źródło
0

POSIX definiuje zestaw standardów dla systemu operacyjnego lub programu. Celem jest napisanie nowego oprogramowania zgodnego z systemami podobnymi do UNIX.

Na przykład program działający w systemie Linux można także skompilować i uruchomić na innych systemach typu UNIX, takich jak Solaris, HP-UX i AIX itp.

Najpopularniejsze przykłady GNU Bashto 100% zgodność i gawkużyteczność POSIX .

sras
źródło
0

Posix reguluje interoperacyjność, przenośność oraz w innych obszarach, takich jak wykorzystanie i mechanizm rozwidlenia, uprawnienia i standardy systemu plików, takie jak / etc, / var, / usr i tak dalej . Dlatego, gdy programiści piszą program w systemie zgodnym z Posix, takim jak na przykład Linux, generalnie, nie zawsze, gwarantuje się uruchomienie w innym systemie zgodnym z Posix, takim jak system IBM AIX lub inne komercyjne warianty Uniksa. Posix jest dobrym rozwiązaniem, ponieważ ułatwia tworzenie oprogramowania, zapewniając maksymalną przenośność, do której dąży. Mam nadzieję, że ta odpowiedź ma sens.

Dzięki Jed Smith i Tinkertim za wskazanie mojego błędu - mojego złego !!! :(

t0mm13b
źródło
Standardy systemu plików są obsługiwane poza POSIX.
Jed Smith
Mylisz POSIX z takimi rzeczami jak LSB (Linux Standard Base). Dwa (głównie) zgodne z POSIX systemy operacyjne to FBSD i Linux, ale oba mają raczej inną organizację systemu plików i domyślne instalacje bibliotek.
Tim Post
0

Specyfikacja (plan) o tym, jak uczynić system operacyjny kompatybilnym z późnym systemem UNIX (niech Bóg go błogosławi!). Właśnie dlatego macOS i GNU / Linux mają bardzo podobne wiersze poleceń terminala, GUI, bibliotek itp. Ponieważ oba zostały zaprojektowane zgodnie ze schematem POSIX.

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

MCH
źródło
-1

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

POSIX jest także interfejsem wywoływania systemu lub interfejsem API i ma prawie 30 lat.

Został zaprojektowany do szeregowego dostępu do danych do lokalnego magazynu , przy użyciu pojedynczych komputerów z pojedynczymi procesorami.

Bezpieczeństwo nie było głównym problemem w POSIX od samego początku, co doprowadziło do licznych ataków na warunki rasowe na przestrzeni lat i zmusiło programistów do obejścia tych ograniczeń.

Wciąż wykrywane są poważne błędy, które można było uniknąć dzięki bezpieczniejszemu interfejsowi API POSIX.

POSIX oczekuje, że użytkownicy będą wykonywać jednocześnie jedno połączenie synchroniczne i czekać na wyniki przed wydaniem następnego. Dzisiejsi programiści oczekują wydawania wielu asynchronicznych żądań jednocześnie, aby poprawić ogólną przepustowość.

Ten synchroniczny interfejs API jest szczególnie zły w przypadku uzyskiwania dostępu do obiektów zdalnych i chmurowych, w przypadku których ważne jest duże opóźnienie.

prosti
źródło
Synchroniczny interfejs API jądra nie musi oznaczać procesów jednowątkowych i serializowanych operacji we / wy. Nie ma też nic wspólnego z maszynami SMP. Te są całkowicie niezwiązane. (Chociaż zgadzam się, że API jądra synchronizacji jest nieoptymalne, ale nie tak ciężkie, jak wydaje się w twoim poście).
peterh - Przywróć Monikę