Каков наилучший способ подключения сокета к Stdin/Stdout. Я знаю, что мы можем перенаправить stdin/Stdout в любой дескриптор файла, но как мы можем сделать то же самое с сокетами. (например, как работает socat)?golang присоединить разъем к Stdin/Stdout
ответ
Ну типы сокетов в 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
}
Создав сокет, вы имеете в виду net.Dial()? Мне нужно подключить текущий терминал к разъему unix. - Другой конец сокета работает агрессивно. Должен ли я использовать эту структуру termios? – Harish
@Harish 'net.Dial' может открывать unix-сокеты:' net.Dial ("unix", "/path/to/unix.sock") ' – Endophage
Где код? Вы еще что-то пробовали. – shivams
Я добавил что-то, чтобы открыть трубку и установить fd канала на терминал.MakeRaw(), но похоже, что мы не можем сделать что-то подобное с сокетами. – Harish