Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ p2open(3G) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fclose(3S)

popen(3S)

setbuf(3S)

p2open(3G)                                                       p2open(3G)

NAME
     p2open, p2close - Pipe zu Kommando öffnen/schließen

SYNTAX
     cc [option ...] datei ... -lgen [bibliothek ...]

     #include <libgen.h>

     int p2open(const char *cmd, FILE *fp[2]);

     int p2close(FILE *fp[2]);

BESCHREIBUNG
     p2open() erzeugt und startet eine Shell-Prozedur, um die Kommandozeile
     auszuführen, auf die cmd zeigt. Bei der Rückkehr zeigt fp[0] auf einen
     FILE-Zeiger, um auf die Standardeingabe des Kommandos zu schreiben,
     und fp[1] zeigt auf einen FILE-Zeiger, um von der Standardausgabe des
     Kommandos zu lesen. Damit hat das Programm die Kontrolle über die Ein-
     und die Ausgabe des Kommandos.

     Wenn die Funktion erfolgreich ist, gibt sie 0 zurück; sonst wird -1
     zurückgegeben.

     p2close() wird verwendet, um die Dateizeiger zu schließen, die
     p2open() geöffnet hat. p2close() wartet darauf, daß der Prozeß endet
     und gibt dann den Prozeßstatus zurück. Bei Erfolg wird 0 zurückgege-
     ben, sonst -1.

BEISPIELE
     #include <stdio.h>
     #include <libgen.h>

     main(argc,argv)
     int argc;
     char **argv;
     {
         FILE *fp[2];
         pidt pid;
         char buf[16];

         pid=p2open("/usr/bin/cat", fp);
         if ( pid == 0 ) {
                 fprintf(stderr, "p2open ist gescheitert\n");
                 exit(1);
         }
         write(fileno(fp[0]),"Dies ist ein Test\n", 16);
         if(read(fileno(fp[1]), buf, 16) <=0)
                 fprintf(stderr, "p2open ist gescheitert\n");
         else
                 write(1, buf, 16);
         (void)p2close(fp);
     }



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

p2open(3G)                                                       p2open(3G)

ERGEBNIS
     Häufig sind zu wenig Dateideskriptoren vorhanden. p2close() gibt -1
     zurück, wenn die beiden Dateizeiger nicht vom selben p2open() stammen.

HINWEISE
     Bei gepuffertem Schreiben nach fp[0] kann es sein, daß das Kommando
     scheinbar nicht ausgeführt wird. Ebenso kann es problematisch sein,
     wenn mit einer Pipe verbundene Kommandos eine ungepufferte Ausgabe
     verwenden. Verwenden Sie fflush()-Aufrufe oder nicht gepuffertes fp[0]
     [siehe auch fclose(3S)].

SIEHE AUCH
     fclose(3S), popen(3S), setbuf(3S).









































Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026