GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So leiten Sie die Programmausgabe als Eingabe um

Zuerst müssen Sie beim Drucken nach std::cout Zeilenumbrüche ausgeben , sonst std::getline() keine vollständige Zeile zum Lesen haben.

Verbesserte Version:

#include <iostream>
#include <string>

int main()
{
  std::cout << "stars" << std::endl;

  for(;;) {
    std::string string_object;
    std::getline(std::cin, string_object);
    std::cout << string_object << std::endl;
  }

  return 0;
}

Versuchen Sie jetzt Folgendes:

./bin >file <file

Sie sehen keine Ausgabe, weil es in die Datei geht. Aber wenn Sie das Programm stoppen und sich die Datei ansehen, sehen Sie, sie ist voll von

stars
stars
stars
stars

:-)

Auch der Grund, warum die Rückkopplungsschleife nicht starten kann, wenn Sie es versuchen

./bin 0>&1

ist, dass sowohl stdin als auch stdout mit /dev/tty verbunden sind (was bedeutet, dass Sie die Ausgabe sehen können).

Aber ein TTY-Gerät kann die Schleife niemals schließen, da es tatsächlich aus zwei getrennten Kanälen besteht, von denen einer die Ausgabe an das Terminal und der andere die Terminaleingabe an den Prozess weiterleitet.

Wenn Sie eine reguläre Datei für die Ein- und Ausgabe verwenden, kann die Schleife geschlossen werden. Jedes in die Datei geschriebene Byte wird auch daraus gelesen, wenn die stdin des Prozesses damit verbunden ist. Solange kein anderer Prozess gleichzeitig aus der Datei liest, da jedes Byte in einem Stream nur einmal gelesen werden kann.


Linux
  1. Eingabe-/Ausgabeumleitung in Linux/Unix

  2. Wie leite ich die Ausgabe eines Programms in eine Zip-Datei um?

  3. Ausgabe umleiten und leiten?

  4. So leiten Sie die Ausgabe in eine Datei und stdout um

  5. Wie hängt man die Ausgabe an eine Datei an?

So speichern Sie die Befehlsausgabe in einer Datei unter Linux

So leiten Sie stderr in Bash auf stdout um

So leiten Sie die Shell-Befehlsausgabe um

So leiten Sie die Ausgabe des systemd-Dienstes in eine Datei um

Wie leite ich eine Domain lokal auf eine andere Domain um?

iftop - wie erzeuge ich eine Textdatei mit ihrer Ausgabe?