Co to jest POSIX? Przeczytałem artykuł w Wikipedii i czytam go za każdym razem, gdy napotykam ten termin. Faktem jest, że tak naprawdę nigdy nie zrozumiałem, co to jest.
Czy ktoś może mi to wyjaśnić, tłumacząc „potrzebę POSIX”?
linux
unix
posix
terminology
pazury
źródło
źródło
Odpowiedzi:
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.
źródło
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 :)Najważniejsze rzeczy, które definiuje POSIX 7
C API
Znacznie rozszerza ANSI C o takie rzeczy jak:
mkdir
,dirname
,symlink
,readlink
,link
(hardlinki),poll()
,stat
,sync
,nftw()
fork
,execl
,wait
,pipe
, semaphorssem_*
, wspólna pamięć (shm_*
)kill
, parametrów harmonogramu (nice
,sched_*
)sleep
,mkfifo
,setpgid()
socket()
mmap
,mlock
,mprotect
,madvise
,brk()
reg*
)Te interfejsy API określają również podstawowe koncepcje systemu, od których są zależne, np.
fork
Wymagają 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.
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 .Język powłoki
Na przykład,
a=b; echo "$a"
Główne implementacje pulpitu Linux: GNU Bash .
Zmienne środowiska
Np .:
HOME
,PATH
.PATH
semantyka wyszukiwania jest określona , w tym sposóbPATH
, w jaki ukośniki uniemożliwiają wyszukiwanie .Status wyjścia z programu
ANSI C mówi
0
lubEXIT_SUCCESS
dla sukcesu,EXIT_FAILURE
dla niepowodzenia i pozostawia zdefiniowaną resztę implementacji.POSIX dodaje:
126
: znaleziono polecenie, ale nie można go wykonać.127
: nie znaleziono polecenia.> 128
: zakończone sygnałem.Ale POSIX nie wydaje się określać
128 + SIGNAL_ID
reguły używanej przez Bash: /unix/99112/default-exit-code-when-process-is-terminatedWyraż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.
grep
Domyś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
grep
mogą używać jako backend.Struktura katalogów
Np
/dev/null
,/tmp
Linux FHS znacznie rozszerza POSIX.
Nazwy plików
/
jest separatorem ścieżkiNUL
nie może być użyty.
jestcwd
,..
rodzica-zA-Z0-9._-
Zobacz także: czym jest zgodność posix dla systemu plików?
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 -- -l
aby wyświetlić katalog o nazwie-l
Zobacz także: Czy istnieją standardy dotyczące przełączników i argumentów wiersza poleceń systemu Linux?
„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 z
setxattr
.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ą:
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
/proc
systemu plików, Bash, GCC, (TODO prawdopodobnie glibc?)apt-get
I 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?
źródło
POSIX to:
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.
źródło
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.
źródło
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.
źródło
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:
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.
źródło
Z książki: Praktyczny przewodnik po systemie Linux
źródło
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.
źródło
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.
źródło
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.
źródło
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 Bash
to 100% zgodność igawk
użyteczność POSIX .źródło
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 !!! :(
źródło
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ć.
źródło
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.
źródło