So zum Rohr in C, würde Ich mag die folgende Befehlszeile in C tun:Wie
ps -eo user,pid,ppid 2> log.txt | grep user 2>>log.txt | sort -nk2 > out.txt
Aber ich bin nicht sicher, wie überhaupt, wie der Code ... ich sein könnte bin verwirrt bei wie muss ich die ausgabe eines befehls in eine datei schreiben, die richtige und die fehlerausgabe ...
Auch ich habe keine Ahnung wie ich die Rohrleitungen strukturieren soll und was wann zu tun ist pid == -1 oder wenn pid> 0 ...
Mein Code unten:
int main(){
int fd0[2], fd1[2], pid0, pid1;
pipe(fd0);
pid0 = fork();
if (pid == 0){
close(1);
dup(fd0[0]);
fd_file= open(“./out.txt”, O_WRONLY | O_CREAT | O_TRUNC, 00600);
execl("sort","-nk2",">fd_file");
pipe(fd1);
pid1 = fork();
if (pid1 == 0){
close(1);
dup(fd1[0]);
...?
}
}
else if (pid == -1){
perror("ERROR AT SORT!\n");
exit(1);
}
return 0;
}
Zum Behandeln von Fehlern ist es wahrscheinlich am besten zu beenden (mit Rückkehr in 'main()' oder 'exit()'). – jdarthenay
Legen Sie keine neue Zeile am Ende der an "perror" übergebenen Zeichenfolge an. 'perror' wird Ihre Zeichenfolge gefolgt von einem': 'ausgeben, und es sieht seltsam aus, wenn der Doppelpunkt in einer neuen Zeile beginnt. –
Die nächste Zeile nach execl wird nur ausgeführt, wenn execl fehlschlägt. – cdarke