Hallo,
will das Ergebnis eines Shell-Kommandos über eine Pipe in eine Datei schreiben. Im Moment löse ich das so:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
int main() {
int pfd[2];
int pid;
pipe(pfd);
pid=fork();
if(pid==-1) perror("fork"),exit(1);
if(pid==0) { //child
close(pfd[0]);
close(1);
dup(pfd[1]);
execlp("ls","ls","-lai",NULL);
perror("exec");
exit(3);
}
else { //parent
int fd,rbytes;
close(pfd[1]);
if((fd=open("blubb",O_CREAT|O_TRUNC|O_WRONLY,0644))<0)
perror("open"),exit(2);
char buf[128];
rbytes=read(pfd[0],buf,sizeof(buf));
write(fd,buf,rbytes);
close(fd);
exit(0);
}
}
Nun meine Frage ob es auch irgendwie möglich ist, dieses "Erst aus Pipe lesen und dann in Datei schreiben" wegzulassen und direkt irgendwie das Pipe-Ende (Leseende) mit der Datei zu verbinden. Mit dup() und vorherigem Close ist sowas ja möglich....aber ob ich damit ich auch direkt schreiben kann habe ich nicht hinbekommen und glaube auch es funktioniert nicht....
Ist alles nur eine Übungsaufgabe, also nicht nach dem Sinn fragen
Wäre nett wenn mir einer auf die Sprünge helfen könnte,
Gruß,
Ace
Lesezeichen