2016-05-07 3 views
2

Каков наилучший способ подключения сокета к Stdin/Stdout. Я знаю, что мы можем перенаправить stdin/Stdout в любой дескриптор файла, но как мы можем сделать то же самое с сокетами. (например, как работает socat)?golang присоединить разъем к Stdin/Stdout

+4

Где код? Вы еще что-то пробовали. – shivams

+0

Я добавил что-то, чтобы открыть трубку и установить fd канала на терминал.MakeRaw(), но похоже, что мы не можем сделать что-то подобное с сокетами. – Harish

ответ

3

Ну типы сокетов в Go реализуют интерфейс io.Writer и os.Stdin реализует io.Reader, так что мое первое предположение было бы попробовать bufio.Writer. Вероятно, это выглядит примерно так:

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. - Другой конец сокета работает агрессивно. Должен ли я использовать эту структуру termios? – Harish

+0

@Harish 'net.Dial' может открывать unix-сокеты:' net.Dial ("unix", "/path/to/unix.sock") ' – Endophage