Che cos'è POSIX? Ho letto l' articolo di Wikipedia e l'ho letto ogni volta che incontro il termine. Il fatto è che non ho mai veramente capito di cosa si tratta.
Qualcuno può spiegarmelo spiegando anche "la necessità di POSIX"?
Che cos'è POSIX? Ho letto l' articolo di Wikipedia e l'ho letto ogni volta che incontro il termine. Il fatto è che non ho mai veramente capito di cosa si tratta.
Qualcuno può spiegarmelo spiegando anche "la necessità di POSIX"?
Risposte:
POSIX è una famiglia di standard, specificata dall'IEEE , per chiarire e uniformare le interfacce di programmazione dell'applicazione (e problemi accessori, come le utility della shell a riga di comando) fornite dai sistemi operativi Unix-y. Quando scrivi i tuoi programmi per fare affidamento sugli standard POSIX, puoi essere abbastanza sicuro di essere in grado di portarli facilmente tra una grande famiglia di derivati Unix (incluso Linux, ma non limitato a questo!); se e quando usi qualche API Linux che non è standardizzata come parte di Posix, avrai un momento più difficile se e quando vuoi portare quel programma o libreria su altri sistemi Unix-y (es. MacOSX) in futuro.
Microsoft's market share on desktops, at least, makes it "what the world follows"
- Interessante notare quante cose sono cambiate da questo commento del 2009 :)
Le cose più importanti che POSIX 7 definisce
Estende notevolmente ANSI C con cose come:
mkdir
, dirname
, symlink
, readlink
, link
(collegamenti fisici), poll()
, stat
, sync
,nftw()
fork
, execl
, wait
, pipe
, semaphors sem_*
, memoria dinamica ( shm_*
) kill
, parametri di pianificazione ( nice
, sched_*
), sleep
, mkfifo
,setpgid()
socket()
mmap
, mlock
, mprotect
, madvise
,brk()
reg*
)Tali API determinano anche i concetti di sistema sottostanti da cui dipendono, ad esempio fork
richiedono un concetto di processo.
Molte chiamate di sistema Linux esistere per implementare una funzione API POSIX C specifica e rendere conforme Linux, ad esempio sys_write
, sys_read
... Molti di questi hanno anche syscalls estensioni specifiche per Linux tuttavia.
Importante implementazione desktop Linux: glibc, che in molti casi fornisce solo un wrapper superficiale per le chiamate di sistema.
Ad esempio: cd
, ls
, echo
, ...
Molte utility sono front-end di shell diretta per una funzione API C corrispondente, ad es mkdir
.
Implementazione del desktop Linux Maggiore: GNU Coreutils per i piccoli, progetti GNU separate per i grandi: sed
, grep
, awk
, ... Alcune utility CLI sono attuate da Bash come built-in .
Per esempio, a=b; echo "$a"
Importante implementazione desktop Linux: GNU Bash .
Ad esempio: HOME
, PATH
.
PATH
vengono specificate le semantiche di ricerca , incluso il modo inPATH
cui le barre impediscono la ricerca .
ANSI C dice 0
o EXIT_SUCCESS
per il successo, EXIT_FAILURE
per il fallimento e lascia definita l'implementazione del resto.
POSIX aggiunge:
126
: comando trovato ma non eseguibile.
127
: comando non trovato.
> 128
: terminato da un segnale.
Ma POSIX non sembra specificare la 128 + SIGNAL_ID
regola utilizzata da Bash: /unix/99112/default-exit-code-when-process-is-terminated
Esistono due tipi: BRE (base) ed ERE (estesa). Basic è obsoleto e mantenuto solo per non interrompere le API.
Questi sono implementati da funzioni API C e utilizzati in tutti i programmi di utilità CLI, ad esempio grep
accetta BRE per impostazione predefinita e ERE con -E
.
Per esempio: echo 'a.1' | grep -E 'a.[[:digit:]]'
Importante implementazione di Linux: glibc implementa le funzioni sotto regex.h che programmi simili grep
possono usare come backend.
Ad esempio: /dev/null
,/tmp
Linux FHS estende notevolmente POSIX.
/
è il separatore di percorsoNUL
non può essere usato.
è cwd
, ..
genitorea-zA-Z0-9._-
Vedi anche: cos'è la conformità posix per il filesystem?
Convenzioni API dell'utilità della riga di comando
Non obbligatorio, utilizzato da POSIX, ma quasi da nessun'altra parte, in particolare non in GNU. Ma è vero, è troppo restrittivo, ad esempio solo bandiere a lettera singola (ad es. -a
), Nessuna versione lunga con doppio trattino (ad es --all
.).
Alcune convenzioni ampiamente utilizzate:
-
significa stdin in cui è previsto un file--
termina i flag, ad esempio ls -- -l
per elencare una directory denominata-l
Vedi anche: Esistono standard per opzioni e argomenti della riga di comando di Linux?
"POSIX ACLs" (Elenchi di controllo degli accessi), ad esempio utilizzati come backend per setfacl
.
Questo è stato ritirato ma è stato implementato in diversi sistemi operativi, incluso in Linux consetxattr
.
Chi è conforme a POSIX?
Molti sistemi seguono POSIX da vicino, ma pochi sono in realtà certificati da Open Group che mantiene lo standard. Notevoli quelli certificati includono:
La maggior parte delle distribuzioni Linux sono molto conformi, ma non certificate perché non vogliono pagare il controllo di conformità. K-UX di Inspur e EulerOS di Huawei sono due esempi certificati.
L'elenco ufficiale dei sistemi certificati è disponibile all'indirizzo: https://www.opengroup.org/openbrand/register/ e anche nella pagina wiki .
finestre
Windows ha implementato POSIX su alcune delle sue distribuzioni professionali.
Dato che era una funzione opzionale, i programmatori non potevano fare affidamento su di esso per la maggior parte delle applicazioni per l'utente finale.
Il supporto è stato deprecato in Windows 8:
Nel 2016 è stata annunciata una nuova API ufficiale simile a Linux chiamata "Sottosistema Windows per Linux". Include chiamate di sistema Linux, ELF in esecuzione, parti del /proc
filesystem, Bash, GCC, (TODO probabilmente glibc?) apt-get
E altro: https://channel9.msdn.com/Events/Build/2016/P488 quindi credo che sia consentirà a Windows di eseguire molto, se non tutto, POSIX. Tuttavia, si concentra sugli sviluppatori / sulla distribuzione anziché sugli utenti finali. In particolare, non c'erano piani per consentire l'accesso alla GUI di Windows.
Panoramica storica della compatibilità ufficiale con Microsoft POSIX: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/
Cygwin è un noto progetto GPL di terze parti per quello "fornisce sostanziali funzionalità API POSIX" per Windows, ma richiede che "ricostruisca l'applicazione dal sorgente se si desidera che funzioni su Windows". MSYS2 è un progetto correlato che sembra aggiungere più funzionalità su Cygwin.
androide
Android ha la sua libreria C (Bionic) che non supporta completamente POSIX da Android O: Android POSIX è compatibile?
Livello bonus
Il Linux Standard Base estende ulteriormente POSIX.
Utilizza gli indici non frame, sono molto più leggibili e ricercabili: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
Ottieni una versione zippata completa delle pagine HTML per il grepping: dov'è l'elenco delle funzioni dell'API POSIX C?
POSIX è:
POSIX (pronunciato / ˈpɒzɪks /) o "Interfaccia del sistema operativo portatile [per Unix]" 1 è il nome di una famiglia di standard correlati specificati dall'IEEE per definire l'interfaccia di programmazione dell'applicazione (API), insieme alle interfacce shell e utility per il software compatibile con le varianti del sistema operativo Unix, sebbene lo standard possa applicarsi a qualsiasi sistema operativo.
Fondamentalmente si trattava di una serie di misure per alleviare il dolore dello sviluppo e dell'uso di diversi tipi di UNIX con un'API e utilità (principalmente) comuni. La conformità POSIX limitata è stata estesa anche a varie versioni di Windows.
Consentitemi di dare la spiegazione "non ufficiale" di un coraggioso.
POSIX è un insieme di standard che tenta di distinguere i sistemi "UNIX" e simili a quelli UNIX da quelli incompatibili con essi. È stato creato dal governo degli Stati Uniti a fini di approvvigionamento. L'idea era che gli appalti federali statunitensi necessitavano di un modo per specificare legalmente i requisiti per vari tipi di offerte e contratti in un modo che potesse essere utilizzato per escludere i sistemi ai quali una data base di codice esistente o il personale di programmazione NON sarebbero portabili.
Dal momento che POSIX è stato scritto post facto ... per descrivere un insieme vagamente simile di sistemi concorrenti ... NON è stato scritto in un modo che potesse essere implementato.
Quindi, ad esempio, NT di Microsoft è stato scritto con sufficiente conformità POSIX per qualificarsi per alcune offerte ... anche se il sottosistema POSIX era essenzialmente inutile in termini di portabilità pratica e compatibilità con i sistemi UNIX.
Vari altri standard per UNIX sono stati scritti nel corso dei decenni. Cose come SPEC1170 (specificate undiciecentosettanta chiamate di funzione che dovevano essere implementate in modo compatibile) e varie incarnazioni del SUS (specifica UNIX singola).
Per la maggior parte questi "standard" sono stati inadeguati a qualsiasi applicazione tecnica pratica. Esistono soprattutto per argomentazioni, controversie legali e altre ragioni disfunzionali.
POSIX è uno standard per i sistemi operativi che avrebbe dovuto facilitare la scrittura di software multipiattaforma. È particolarmente importante nel mondo di Unix.
POSIX è un insieme di standard proposti da IEEE e The Open Group che descrivono il funzionamento di un Unix ideale. I programmatori, gli utenti e gli amministratori possono acquisire familiarità con il documento POSIX e aspettarsi che un reclamo POSIX Unix fornisca tutte le strutture standard menzionate.
Poiché ogni Unix fa le cose in modo leggermente diverso - Solaris, Mac OS X, IRIX, BSD e Linux hanno tutti le loro peculiarità - POSIX è particolarmente utile per quelli del settore in quanto definisce un ambiente standard in cui operare. Ad esempio, la maggior parte delle funzioni nella libreria C sono basate su POSIX; un programmatore può quindi utilizzarne uno nella sua applicazione e aspettarsi che si comporti allo stesso modo nella maggior parte degli Unices.
Tuttavia, le aree divergenti di Unix sono in genere al centro dell'attenzione, piuttosto che quelle standard.
La cosa grandiosa di POSIX è che sei il benvenuto a leggerlo tu stesso:
Il numero 7 è noto come POSIX.1-2008 e ci sono nuove cose, tuttavia, Google-fu per POSIX.1 e tali ti permetteranno di vedere l'intera storia dietro ciò che Unix è.
Nel 1985, individui di aziende di tutto il settore informatico si sono uniti per sviluppare lo standard POSIX (Portable Operating System Interface for Computer Environments), che si basa in gran parte sulla UNIX System V Interface Definition (SVID) e altri precedenti sforzi di standardizzazione. Questi sforzi furono stimolati dal governo degli Stati Uniti, che aveva bisogno di un ambiente informatico standard per ridurre al minimo i costi di formazione e acquisizione. Rilasciato nel 1988, POSIX è un gruppo di standard IEEE che definiscono le interfacce API, shell e utility per un sistema operativo. Sebbene sia rivolto a sistemi simili a UNIX, gli standard possono applicarsi a qualsiasi sistema operativo compatibile. Ora che questi standard hanno ottenuto l'accettazione, gli sviluppatori di software sono in grado di sviluppare applicazioni che funzionano su tutte le versioni conformi di UNIX, Linux,
Dal libro: una guida pratica a Linux
Posix è più come un sistema operativo, è uno "standard del sistema operativo". Puoi immaginarlo come un sistema operativo immaginario, che in realtà non esiste, ma ha una documentazione. Questi documenti sono lo "standard posix", definito dall'IEEE, che è la grande organizzazione standard degli Stati Uniti. I sistemi operativi che implementano questa specifica sono "conformi a Posix".
I regolamenti governativi preferiscono soluzioni conformi a Posix nei loro investimenti, pertanto la conformità a Posix ha un vantaggio finanziario significativo, in particolare per le grandi aziende IT degli Stati Uniti.
La ricompensa per un sistema operativo completamente conforme a posix, che è una garanzia che compilerà ed eseguirà senza problemi tutte le applicazioni conformi a Posix.
Linux è il più noto. Qui giocano anche OSX, Solaris, NetBSD e Windows NT. Free- e OpenBSD sono solo "quasi" conformi a Posix. La posix-compliance di WinNT è solo una pseudo-soluzione per evitare questo regolamento governativo sopra.
Questo standard fornisce una base comune per i sistemi operativi simili a Unix. Specifica come dovrebbe funzionare la shell, cosa aspettarsi da comandi come ls e grep e un numero di librerie C che gli autori C possono aspettarsi di avere a disposizione.
Ad esempio, le pipe utilizzate dagli utenti della riga di comando per mettere insieme i comandi sono specificate qui in dettaglio, il che significa che la funzione popen (pipe open) di C è standard POSIX, non ISO C standard.
POSIX è l'acronimo di Portable Operating System Interface ed è uno standard IEEE progettato per facilitare la portabilità delle applicazioni. POSIX è un tentativo da parte di un consorzio di fornitori di creare un'unica versione standard di UNIX.
POSIX definisce una serie di standard per un sistema operativo o un programma. L'obiettivo è scrivere un nuovo software compatibile con i sistemi simili a UNIX.
Ad esempio, un programma eseguito su Linux può anche essere compilato ed eseguito su altri sistemi simili a UNIX come Solaris, HP-UX e AIX ecc.
Gli esempi più popolari sono la GNU Bash
conformità e l' gawk
utilità POSIX al 100% .
Posix governa l'interoperabilità, la portabilità e in altre aree come l'uso e il meccanismo di fork, le autorizzazioni e gli standard del file system come / etc, / var, / usr e così via . Pertanto, quando gli sviluppatori scrivono un programma con un sistema conforme a Posix come ad esempio Linux, in genere non sempre è garantito l'esecuzione su un altro sistema conforme a posix come il sistema AIX di IBM o altre varianti commerciali di Unix. Posix è una buona cosa da avere in quanto tale facilita lo sviluppo del software per la massima portabilità per cui si sforza. Spero che questa risposta abbia un senso.
Grazie a Jed Smith e Tinkertim per aver segnalato il mio errore - il mio male !!! :(
Una specifica (progetto) su come rendere un sistema operativo compatibile con il sistema operativo UNIX recente (che Dio lo benedica!). Questo è il motivo per cui macOS e GNU / Linux hanno linee di comando del terminale molto simili, GUI, librerie, ecc. Perché entrambi sono stati progettati secondo il modello POSIX.
POSIX non dice agli ingegneri e ai programmatori come codificare ma cosa codificare.
Alcuni fatti su POSIX che non sono così brillanti.
POSIX è anche l'interfaccia di chiamata di sistema o API ed ha quasi 30 anni.
È stato progettato per l'accesso ai dati serializzato all'archiviazione locale , utilizzando singoli computer con singole CPU.
La sicurezza non è stata una delle principali preoccupazioni in POSIX in termini di progettazione, portando negli anni numerosi attacchi alle condizioni di gara e costringendo i programmatori a aggirare queste limitazioni.
Si stanno ancora scoprendo gravi bug, bug che avrebbero potuto essere evitati con un design API POSIX più sicuro.
POSIX si aspetta che gli utenti emettano una chiamata sincrona alla volta e attendono i risultati prima di emettere la successiva. I programmatori di oggi prevedono di inviare molte richieste asincrone alla volta per migliorare la velocità complessiva.
Questa API sincrona è particolarmente dannosa per l'accesso a oggetti remoti e cloud, dove è importante latenza elevata.