dup2 - dupliziert einen Dateideskriptor.
Beschreibung
int dup2(int oldfd, int newfd);Der neue Dateideskriptor newfd wird angepasst, sodass er den selben offenen Dateideskriptor oldfd referenziert.
Beispiel
Dieses Beispiel ist eine Implementierung für das Kommando ls -l | wc -l (Zählen von Dateien im geöffneten Verzeichnis) in C.
Wir leiten hier die Standardausgabe von ls -l um in die Eingabe von wc -l.
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {
pid_t pid;
int fd[2];
pipe(fd);
pid = fork();
if(pid==0) {
close(fd[1]);
// fd[0] ist das offene Pipe-Ende
// 0 ist die numerische Kennung von stdin
dup2(fd[0], 0);
// Aufruf `wc -l`
execlp("wc", "wc", "-l", (char *)NULL);
exit(0);
}
else {
close(fd[0]);
// 1 ist die numerische Kennung von stdout
dup2(fd[1], 1);
// Aufruf `ls -l`
execlp("ls", "ls", "-l", (char*)NULL);
}
close(fd[0]);
close(fd[1]);
return 0;
}Verwandte Themen