Definition | #include <bs2cmd.h> int bs2cmd(const char *cmd, bs2cmd_rc *rc, int maxoutput, int flag Mit Die Kommando-Ausgaben können optional gepuffert werden. In diesem Fall ist die Schnittstelle auch von einer rlogin-Task ohne SYSFILE-Umgebung nutzbar. | |
Parameter | const char *cmd Dieser Parameter enthält das auszuführende Kommando oder eine Kommandoliste, in der die einzelnen Kommandos durch Semikolon getrennt angegeben werden. Bis auf Zeichenfolgen, die in Apostrophe eingeschlossen sind, werden alle Zeichen in cmd vor dem Aufruf in Großbuchstaben umgewandelt. bs2cmd_rc *rc rc ist ein Zeiger auf eine Struktur typedef struct bs2cmd rc { unsigned char subcode2; unsigned char subcode1; unsigned short maincode; unsigned short progrc; char cmdmsg[8]; } bs2cmd rc; Falls beim Aufruf von int maxoutput Dieser Parameter spezifiziert die Größe des anzulegenden Puffers für die Kommando- Ausgabe in Bytes. Bei der Wahl der Puffergröße ist zu beachten, dass zusätzlich zur eigentlichen Kommando-Ausgabe auch Verwaltungsinformationen ausgegeben werden. Folgende Konstanten können angegeben werden: BS2CMD_DEFAULT Es wird ein Standard-Puffer von 256 KB verwendet. BS2CMD_NOBUFFER Die Ausgaben werden nicht gepuffert. Unter rlogin-Tasks können mit dieser Einstellung Kommandos, die Ausgaben erzeugen, nur dann ausgeführt werden, wenn der Anwender einen Puffer bereitstellt (Angabe BS2CMD_FLAG_USER_BUFFER im Parameter flag). Wenn der Puffer zu klein für die anstehenden Ausgaben gewählt wird, dann bricht die Kommando-Ausführung ab. int flag Dieser Parameter spezifiziert die Konfigurationsflags für die Schnittstelle. Derzeit können Sie die folgenden Flags oder Kombinationen von Flags (mit "|" verknüpft) angeben: BS2CMD_FLAG_STRIP Die Druckersteuerzeichen in der Kommando-Ausgabe werden vor der Ausgabe entfernt. BS2CMD_FLAG_SPLIT Die Kommando-Ausgaben werden auf stdout und stderr aufgeteilt. Meldungen werden nach stderr ausgegeben. BS2CMD_FLAG_USER_BUFFER
| |
Parameter | der variablen Parameterliste: Die folgenden Parameter ermöglichen Kommando-Ausgaben in einen vom Anwender bereitgestellten Speicherbereich, wenn im Parameter flag BS2CMD_FLAG_USER_BUFFER angegeben ist. int *outbuflen Länge des Speicherbereichs für stdout- Ausgaben. Nach Ausführung von char *outbuf Adresse des Speicherbereichs für stdout-Ausgaben. int *errbuflen Länge des Speicherbereichs für stderr- Ausgaben. Nach Ausführung von *errbuflen ist nur dann relevant, wenn im Parameter flag BS2CMD_FLAG_SPLIT angegeben ist. char *errbuf spezifiziert die Adresse des Speicherbereichs fuer stderr- Ausgaben. *errbuf ist nur dann relevant, wenn BS2CMD_FLAG_SPLIT im Parameter flag gesetzt ist. | |
Returnwert |
| bei erfolgreicher Ausführung des Kommandos. |
-1 | bei Fehler. EINVAL Eines der Argumente hat einen unzulässigen Wert, z.B. ein leeres Kommando oder eine negative Puffergröße. ENOMEM Der Speicherplatz für die anzulegenden Puffer reicht nicht aus. EFAULT Nach der Kommando-Ausführung ist der Inhalt des Ausgabe-Puffers nicht interpretierbar oder Ausrichtungsfehler bei EFBIG Die Größe des Ausgabe-Puffers reicht nicht aus für die anfallenden Ausgaben. Im Fehlerfall ist der Inhalt der Benutzerpuffer undefiniert. | |
Hinweise | Die Meldungen werden, durch Reicht die Größe der Speicherbereiche für die anfallenden Daten nicht aus, dann wird der Returnwert -1 zurückgeliefert und in Wenn für maxoutput der Wert BS2CMD_NOBUFFER und gleichzeitig für flag der Wert BS2CMD_FLAG_USER_BUFFER angegeben ist, dann erfolgt keine interne Zwischenpufferung. Die Kommandoausgaben werden in diesem Fall direkt an den vom Anwender bereitgestellten Puffer Achtung! Im beschriebenen Fall muss die Adresse des Speicherbereichs auf Wortgrenze ausgerichtet sein. Bei Ausrichtungsfehler wird Wenn keine Zwischenpufferung erfolgt, können die flag-Werte BS2C-MD_FLAG_STRIP und BS2CMD_FLAG_SPLIT nicht berücksichtigt werden. Eine Angabe dieser Werte wird ignoriert. |