2012-04-08 7 views
1

Ich schreibe ein Programm, das die Ausgabe eines anderen Programms verarbeitet.Prozess Stdin mit C

Angenommen, mein Testprogramm heißt test und ich möchte die Stdout-Ausgabe des Programms namens file verarbeiten.

In test, ich lese stdin als Datei wie folgt:

FILE *fp; 
fp = fopen("/dev/stdin", "r"); 

Dies funktioniert, wenn ich die folgenden in der Kommandozeile ausführen: ./file | ./test.

Aber ich nehme an, ich möchte I/O-Umleitung verwenden, also: ./file > ./test. Wie kann ich das in C handhaben?

+0

Dies funktioniert, wenn Sie die richtige Syntax verwenden, um die Ausgabe eines Programms (Datei) zu einem anderen Programm (Test) zu leiten, die es als Eingabe zur Verfügung stellt ... Wenn Sie Pipes programmgesteuert unter POSIX-Systemen handhaben möchten (im Test) 'popen' und lassen Sie es öffnen und führen Sie" file "für Sie aus (popen gibt ein' FILE * 'zurück, das die Ausgabe von' file' darstellt). – ShinTakezou

Antwort

3

Die E/A-Umleitung mit > ist nicht für die Rohrleitungsausgabe von einem Programm in ein anderes Programm vorgesehen. Es leitet die Ausgabe von einem Programm in eine Datei um. Der Befehl

./file > ./test 

führt das Programm file und erstellt eine neue Datei test, die die Ausgabe von file enthält. Es wird kein Programm mit dem Namen test ausgeführt, und tatsächlich wird es überschrieben, wenn es existiert.