2016-05-07 23 views
2

Was ist der beste Weg, um einen Sockel an Stdin/Stdout zu befestigen. Ich weiß, dass wir die stdin/Stdout auf jeden beliebigen Dateideskriptor umleiten können, aber wie können wir das Gleiche mit Sockets machen? (Wie funktioniert Socat)?golang einen Socket an Stdin/Stdout anhängen

+4

Wo ist der Code von Ihnen geschrieben? Hast du noch etwas probiert? – shivams

+0

Ich habe etwas hinzugefügt, um eine Pipe zu öffnen und die fd der Pipe auf terminal.MakeRaw() zu setzen, aber es sieht so aus, als könnten wir sowas nicht mit Sockets machen. – Harish

Antwort

3

Nun, die Socket-Typen in Go die io.Writer-Schnittstelle implementieren und os.Stdin implementiert die io.Reader, so meine erste Vermutung bufio.Writer zu versuchen, wäre aus. Es würde wahrscheinlich so etwas wie aussehen:

+0

Mit dem Erstellen eines Sockets meinst du net.Dial()? Ich muss das aktuelle Terminal an die Unix-Buchse anschließen. - Das andere Ende des Sockets läuft agetty. Muss ich die termios-Struktur verwenden, um dies zu erreichen? – Harish

+0

@Harish 'net.Dial' kann Unix-Sockets öffnen:' net.Dial ("unix", "/path/to/unix.sock") ' – Endophage