2016-05-07 5 views
2

Stdin/Stdoutにソケットを接続する最も良い方法は何ですか? stdin/Stdoutを任意のファイル記述子にリダイレクトすることはできますが、どのようにソケットで同じことをすることができるのでしょうか。 (ソーコットの仕組みのように)?私の最初の推測がbufio.Writerを試してみることであろうので、golangがStdin/Stdoutにソケットを接続します

+4

あなたが書いたコードはどこですか?まだ何か試してみましたか? – shivams

+0

私はパイプを開き、パイプのfdをterminal.MakeRaw()に設定するために何かを追加しましたが、ソケットでそのようなことをすることはできません。 – Harish

答えて

3

ゴーでまあソケットタイプはio.Writerインタフェースを実装し、os.Stdinio.Readerを実装しています。おそらく次のようになります:

package main 

import (
    "bufio" 
    "os" 
) 

func main() { 
    socket := getSocket() // left as an exercise for you to implement 
    writer := bufio.NewWriter(socket) 
    writer.ReadFrom(os.Stdin) 
    // do something to determine when to stop 
} 
+0

ソケットを作成することはnet.Dial()を意味しますか? 現在の端末をUNIXソケットに接続する必要があります。 - ソケットのもう一方の端がagettyを走っています。これを実現するtermios構造体を使用する必要がありますか? – Harish

+0

@Harish 'net.Dial'はunixソケットをオープンできます:' net.Dial( "unix"、 "/path/to/unix.sock") ' – Endophage