Ich bin ein wenig verwirrt von "C Standard Lib" und "C POSIX Lib", weil ich festgestellt habe, dass viele in "C POSIX Lib" definierte Header-Dateien auch Teil von "C Standard Lib" sind.
Ich gehe also davon aus, dass "C standard lib" eine von der ANSI C-Organisation definierte Bibliothek ist und auf verschiedenen Plattformen (Win32 / Unix-ähnlich) unterschiedliche Implementierungen vorhanden sind und "C POSIX lib" nur eine Implementierung für "C standard" ist lib "unter Unix-ähnlichen Betriebssystemen, richtig?
Aber "C POSIX lib" enthält einige Header nicht angegeben in "C Standard lib", wie <sys/types.h>
, <sys/wait.h>
und <pthread.h>
.
Nehmen wir <pthread.h>
als Beispiel, ich nehme an, das Gegenstück zu "C standard lib" ist <threads.h>
. Wenn ich dann ein Multithread-Programm unter Linux schreiben möchte, welche Header-Datei sollte ich einschließen, <pthread.h>
oder <threads.h>
?
quelle
Antworten:
POSIX ist eine Obermenge der Standard-C-Bibliothek, und es ist wichtig zu beachten, dass es sich davon unterscheidet. Wenn C und POSIX jemals in Konflikt geraten, gewinnt C.
Sockets, Dateideskriptoren, gemeinsam genutzter Speicher usw. sind Teil von POSIX, jedoch nicht in der C-Bibliothek vorhanden.
pthread.h
wird für POSIX-Threads verwendet undthreads.h
ist ein neuer Header für C11 und Teil der C-Bibliothek. Möglicherweise werden pthreads irgendwann in der Zukunft zugunsten der C-Threads veraltet sein, aber Sie können sich wahrscheinlich noch nicht darauf verlassen, dass C11 weit verbreitet ist. Wenn Sie Portabilität wünschen, sollten Sie daher vorerst pthreads bevorzugen. Wenn die Portabilität keine Rolle spielt und Sie C11-Threads zur Verfügung haben, sollten Sie diese wahrscheinlich verwenden.quelle
CX
. Es heißt, Sie müssen eine Definition hinzufügen, aber normalerweise werden die Erweiterungen durch die Standard-Compiler-Flags aktiviert. Eine andere Möglichkeit ist das Lesen des C-Standards .<semaphore.h>, <pthread.h>
und so weiter (dennoch sollte ich beachten, dass spätere Versionen von C, soweit ich weiß, C11,<thread.h>
Definition enthält ).Die C POSIX- Bibliothek ist eine Spezifikation einer C-Standardbibliothek für POSIX-Systeme. Es wurde zeitgleich mit dem ANSI C-Standard entwickelt. Es wurden einige Anstrengungen unternommen, um POSIX mit Standard C kompatibel zu machen. POSIX enthält zusätzliche Funktionen zu den in Standard C eingeführten.
quelle
POSIX 7 Zitat
http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap01.html#tag_14_01
Ich habe einige wichtige API-Erweiterungen aufgelistet unter: Ich habe nie wirklich verstanden: Was ist POSIX?
quelle
ANSI C lebt noch, denke ich: ANSI C wird von ISO C, Cxx geerbt und erweitert. POSIX hat ANSI C absolut befolgt. "
Wir können ANSI C unter Windows, Unix-ähnlichen, eingebetteten Geräten einfach schreiben. Cxx oder POSIX können jedoch Probleme haben.
quelle