POSIX Schnittstellen
POSIX Erforderliche Arten
POSIX definiert einige typedefs, die in der
Include-Datei < sys/types.h > definiert werden und für viele
Argumente benutzt sind und bringt Werte zurück. Diese typedefs
sind wichtig, weil die Standardc Arten von Maschine zu Maschine
schwanken können und werden lose durch den C Standard definiert.
Die C-Sprache ist auf einer breiten Strecke der Kleinteile wegen
dieser losen Definition nützlicher, die—eine 16-bit
Maschine die gleiche gebürtige Wortgröße nicht wie eine
64-bitmaschine hat, und eine niedrige Programmiersprache sollte nicht
sie vortäuschen tut—aber POSIX Notwendigkeiten mehr
Garantien und also erfordert, daß die der C Include-Datei <
sys/types.h > Bibliothek einen Satz gleichbleibende Arten für jede
diese Maschine Werkzeuge POSIX definieren. Jedes dieser typedefs
kann von einer gebürtigen C Art leicht unterschieden werden, weil es
in _ t beendet.
Die Teilmenge, die für Schnittstellen benutzt wird, ist:
| dev_t |
Eine arithmetische Art, welche die Haupt- und kleinen
Zahlen entsprechen Vorrichtung speziellen Akten hält, fand
normalerweise im /dev Unterverzeichnis. In Linux kann ein dev_t
mit dem major(), dem minor() und den makedev() Makros, die in
manipuliert werden < sys/sysmacros gefunden werden. h >.
Es wird normalerweise nur für die System Programmierung
verwendet. |
| uid_t, gid_t |
Ganzzahl schreibt das Halten einer einzigartigen
Benutzernummer Zahl oder Gruppe Identifikation der Zahl,
beziehungsweise. |
| pid_t |
Eine Ganzzahl Art, die einen einzigartigen Wert für
einen Prozeß auf einem System bereitstellt. |
| id_t |
Eine Ganzzahl Art fähig zum Halten, ohne
Verstümmelung, zum irgendeinem pid_t, zum uid_t oder zum gid_t. |
| off_t |
Eine unterzeichnete Ganzzahl Art, die eine Akte Größe
in den Bytes mißt. |
| size_t |
Eine nicht unterzeichnete Ganzzahl Art, die einen
Ingedächtnis Gegenstand, wie eine Zeichenfolge, eine Reihe oder ein
Puffer mißt. |
| ssize_t |
Eine unterzeichnete Ganzzahl Art, die einen Zählimpuls
der Bytes (positiv) oder des Störung Rückgabecodes hält (negativ). |
| time_t |
Eine Ganzzahl (auf allen normalen Systemen) oder reale
Art des Gleitkommas (damit VMS gelten kann als ein POSIX
Betriebssystem), welche, die Zeit in den Sekunden gibt. |
Die Art Beschreibungen sind absichtlich vage. Es
gibt keine Garantie, daß die Arten dieselben auf zwei
unterschiedlichen Linux Plattformen sind, oder sogar zwei
unterschiedliche Klimas, die auf die gleiche Plattform laufen.
Es ist ziemlich wahrscheinlich, daß eine 64-bitmaschine, die
die 64-bit und 32-bit Klimas stützt, unterschiedliche Werte in jedem
Klima für einige dieser Arten hat. Auch diese Arten können in
den zukünftigen Versionen von Linux, innerhalb des Bereichs ändern,
der von POSIX erlaubt wird.
Entdecken Von von Laufzeitfähigkeiten
Viele System Fähigkeiten haben Begrenzungen, sind
andere wahlweise freigestellt, und einige können die Informationen
haben, die mit ihnen verbunden sind. Eine Begrenzung auf der
Länge der Zeichenkette von Argumenten überschritt zu einem neuen
Programm schützt das System vor willkürlichen Nachfragen nach
Gedächtnis, das das System zu einem Stillstand anders holen könnte.
Nicht alle POSIX Systeme führen Jobsteuerung ein. Ein
Programm kann möchte die neueste Version des POSIX Standards die z.Z.
laufenden System Ansprüche zum Werkzeug kennen.
Die sysconf() Funktion liefert diese Art der
System-spezifischen Informationen, die von System zu System für ein
einzelnes vollziehbares sich unterscheiden kann, Informationen, die
nicht zu der Zeit bekannt daß können, das vollziehbare kompiliert
wird.
# schließen Sie < unistd.h > langes sysconf(int) ein;
Das Ganzzahl Argument zum sysconf() ist eins eines Satzes
Makros, die mit _ Sc _. sind vorgesetzt werden hier, die, die am
wahrscheinlichsten sind, Sie nützlich zu sein:
| _ SC_CLK_TCK |
Bringen Sie die Zahl internen Taktgeberhäckchen des
Kerns pro Sekunde zurück, als gebildet sichtbar zu den Programmen.
Merken Sie, daß der Kern einen oder mehr Taktgeber haben kann,
die mit einer höheren Rate laufen; _ liefert SC_CLK_TCK die
Buchhaltungtaktgeberhäckchenmaßeinheit, die benutzt wird, um über
Informationen vom Kern zu berichten und ist nicht eine Anzeige von
System Latenz. |
| _ SC_STREAM_MAX |
Bringen Sie die Höchstzahl C der Standard-I/O Ströme
zurück, denen ein Prozeß geöffnetes sofort haben kann. |
| _ SC_ARG_MAX |
Bringen Sie die maximale Länge, in den Bytes, der
Befehl-Linie Argumente und der Klimavariablen, die durch irgendwelche
der exec() Funktionen verwendet werden zurück. Wenn diese
Begrenzung überstiegen wird, wird E2BIG durch den exec() Anruf
zurückgebracht. |
| _ SC_OPEN_MAX |
Bringt die Höchstzahl der Akten zurück, denen ein
Prozeß geöffnetes sofort haben kann; er ist derselbe wie die
RLIMIT_NOFILE weiche Begrenzung, die durch geTRlimit() und Satz durch
setrlimit() gefragt werden kann. Dieses ist der einzige
sysconf() Wert, der Wert während der Durchführung eines Programms
ändern kann; wenn setrlimit() benannt wird, um die
RLIMIT_NOFILE weiche Begrenzung zu ändern, _ folgt SC_OPEN_MAX der
neuen weichen Begrenzung. |
| _ SC_PAGESIZE oder _ SC_PAGE_SIZE |
Bringt die Größe einer einzelnen Seite in den Bytes
zurück. Auf Systemen, die mehrfache Seite Größen stützen
können, bringt die Größe einer einzelnen normalen Seite zurück,
wie zugeteilt, um einen normalen Benutzer-Raum Antrag für Gedächtnis
zu beheben, das die gebürtige Seite Größe für das System
betrachtet wird. |
| _ SC_LINE_MAX |
Bringt die Länge in den Bytes von maximalen
Zeilenlänge, das Textbearbeitungdienstprogramme auf dem System
angefordert werden, um anzufassen, einschließlich den angehängten
Buchstaben zurück. Merken Sie, daß viele der GNU
Dienstprogramme, die auf Linux Systemen wirklich verwendet werden,
keine festverdrahtete maximale Länge haben und willkürlich nehmen,
können sich zu sehnen Eingang Linien. Jedoch darf ein
bewegliches Programm nicht Textbearbeitungdienstprogramme mit Text mit
Zeilenlängen länger versehen als _ SC_LINE_MAX; viele Unix
Systeme haben Dienstprogramme mit örtlich festgelegtem maximalem
Zeilenlängen, und das Übersteigen dieses Zeilenlänge kann
unbestimmten Ausgang produzieren. |
| _ SC_NGROUPS_MAX |
Bringt die Zahl zusätzlichen Gruppen zurück, die ein
Prozeß haben kann. |
Grundsystem-Informationen finden und einstellend
Es gibt einig Information über das System, auf
dem ein Programm läuft, das nützlich sein kann. Der
Betriebssystemname und -version z.B. können verwendet werden, um zu
ändern, was Systemprogramm zur Verfügung stellen kennzeichnet.
Der uname() System Anruf lassen ein Programm diese
Laufzeitinformationen entdecken.
# schließen Sie < sys/utsname.h > internes uname(struct
utsname * unameBuf) ein;
Die Funktion bringt ungleich Null auf Störung zurück,
die auftritt, nur wenn unameBuf unzulässig ist. Andernfalls
wird die Struktur, die sie auf zeigt, mit den UNGÜLTIGEN beendeten
Zeichenketten ausgefüllt, die das System beschreiben das Programm an
laufen läßt
Mitglieder von struct utsname
| Mitglied |
Beschreibung |
| sysname |
Der Name des Betriebssystembetriebs (Linux). |
| Freigabe |
Die Versionsnummer des Kerns, der läuft. Dieses
ist die volle Version, wie 2.6.2. Diese Zahl kann von whoever
leicht geändert werden errichtet einen Kern, und sie ist für mehr
als diese drei Zahlen allgemein zu erscheinen. Viele
Verteilungen verwenden eine zusätzliche Zahl, um zu beschreiben
welche Flecken sie angewendet haben und führen zu Freigabezahlen wie
2.4.17-23. |
| Version |
Unter Linux enthält dieses einen beschreibenden
Zeitstempel, als der Kern errichtet wurde. |
| Maschine |
Eine kurze Zeichenkette, welche die Art des
Mikroprozessors spezifiziert, auf der das Betriebssystem läuft.
Dieses konnte i686 für einen Pro- oder neueren Prozessor des
Pentiums, Alpha für einen Alpha-Kategorie Prozessor oder ppc64 für
einen 64-bitpowerPC Prozessor sein. |
| nodename |
Der Wirt Name der Maschine, die häufig der
internet-Wirt Name der Maschine Primärist. |
| domainname |
Das NIS(or YP)domain die Maschine ist ein Teil von, wenn
irgendein. |
Das nodename Mitglied ist, was allgemein den System Wirt
Namen genannt wird (es ist, was der hostname Befehl anzeigt), aber es
sollte nicht mit einem Internet-Wirt Namen verwirrt werden.
Während diese dieselben auf vielen Systemen sind, sind sie
nicht notwendigerweise die gleiche Sache. Ein System mit
mehrfachen Internet-Adressen hat mehrfache Internet-Wirt Namen, aber
nur ein einzelner Nullpunktname, so dort ist nicht eine eins-zu-eins
Gleichwertigkeit.
Eine allgemeinere Situation ist Heimcomputer auf
Breitbandinternet-Anschlüssen. Sie haben normalerweise
Internet-Wirt Namen etwas wie host127-56.raleigh.myisp.com, und ihre
Internet-Wirt Namen ändern, wann immer sie ihr Breitbandmodem
während einer ausgedehnten Periode von timePeople, die jene Maschinen
geben ihnen Nullpunktnamen Hut bessere Klage ihre Beschaffenheiten
besitzen, entlang den Linien von loren oder von eleanor getrennt
haben, die nicht korrekte Internet-Adressen an allen sind. Wenn
sie mehrfache Maschinen hinter einer Haupteinfahrtvorrichtung haben,
teilen alle jene Maschinen ein einzelnes internet address (und einen
einzelnen Internet-Wirt Namen), aber können Namen wie
linux.mynetwork.org und freebsd.mynetwork.org haben, die noch nicht
Internet-Wirt Namen sind. Aus allen diese Gründe, daß der
Nullpunktname des Systems einen ist, gültigen Internet-Wirt Namen
für die Maschine ist anzunehmen nicht eine gute Idee.
Die meisten, aber nicht alle,
Hauptinternet-Dienstleistungen weisen dynamische IP Adressen anstatt
Static eine zu.
Der Nullpunktname des Systems wird mit dem sethostname()
System Anruf eingestellt, und sein NIS (YP) Domain
Name wird durch den setdomainname() System Anruf
eingestellt.
Trotz des irreführenden Namens stellt dieser System Anruf
den Nullpunktnamen, nicht den Internet-Wirt Namen der Maschine ein.
Netz-Informationsdienst oder NIS, ist eine Einheit für
Maschinen in einem Netz, zum von von Informationen wie Benutzernamen
und -kennwörter zu teilen. Es verwendete, genannt zu werden
Yellow Pages oder YP, aber wurde umbenannt. Das NIS Domain Name
ist ein Teil dieser Einheit, die außerhalb des Kerns mit Ausnahme von
dem Domain Name eingeführt wird, das im struct utsname gespeichert
wird.
# schließen Sie < unistd.h > interne sethostname(const
Putzfrau mit ein * Name, size_t len); interne
setdomainname(const Putzfrau * Name, size_t len);
Beide dieser System Anrufe nehmen einen Zeiger zu einer
Zeichenkette (nicht notwendigerweise die NULL beendet) den passenden
Namen und die Länge der Zeichenkette enthalten.
dieses ist ein Artikel, der von Humberto Mitchson
hinzugefügt wird