Heim  >  Artikel  >  php教程  >  Linux C-Programmierung – Pipes

Linux C-Programmierung – Pipes

高洛峰
高洛峰Original
2016-12-13 11:37:191477Durchsuche

Unter Linux ist eine Pipe ebenfalls eine Art Datei, aber sie ist etwas Besonderes. Wir können die Pipe-Funktion verwenden, um eine Pipe zu erstellen, und ihr Prototyp wird wie folgt deklariert:

#inlcude

int Pipe(int Fields[2]);

Tatsächlich entspricht es einem Kommunikationspuffer, Fields[0] wird zum Lesen verwendet und Fields[1] wird zum Schreiben verwendet. Im folgenden Beispiel wird eine Pipe als Kommunikationspuffer erstellt. Der übergeordnete Prozess erstellt einen untergeordneten Prozess. Der untergeordnete Prozess schreibt über den Fields[1]-Deskriptor der Pipe eine Zeichenfolge, während der übergeordnete Prozess die Felder[ verwendet. 1] der Pipe. 0] Lesen Sie diese Zeichenfolge aus der Pipe und zeigen Sie sie an:

#include
#include
#include < unistd.h>
#include
#include
#include
#include

#define BUF_SIZ 255 // Nachrichtenpuffergröße

int main(int argc, char **argv)
{
char buffer[BUF_SIZ + 1];
int fd [2];

// einen String als Parameter erhalten
if (argc != 2)
{
fprintf(stderr, "Verwendung: %s stringna", argv[0] );
exit(1);
}

// Pipe für Kommunikation erstellen
if (pipe(fd) != 0)
{
fprintf(stderr, "Pipe-Fehler erstellen: %sna", strerror(errno));
exit(1);
}

if (fork() == 0) // in child verarbeiten Nachricht in Pipe schreiben
{
close(fd[0]);
printf("Child %ld write to pipena", getpid()); s", argv [1]);
write(fd[1], buffer, strlen(buffer));
printf("Child %ld quit.na", getpid());
}
else // im übergeordneten Prozess Nachricht aus Pipe lesen
{
close(fd[1]);
printf("Parent %ld read from pipena", getpid());
memset(buffer , '

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Linux-Pipe-FunktionNächster Artikel:Linux-Pipe-Funktion