POSIX Schnittstellen

POSIX Erforderliche Arten


  Share  
|


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


Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions