Heim > php教程 > PHP开发 > Linux C-Programmierung – Pipes

Linux C-Programmierung – Pipes

高洛峰
Freigeben: 2016-12-13 11:37:19
Original
1495 Leute haben es durchsucht

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 , '

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage