Size: a a a

2020 August 13

ВС

Владимир Столяров... in Go-go!
Никита
Странно что нет механизма для такого
А вам нужно какое-то интерактивное взаимодействие? Если да, то есть библиотека go-expect по-моему
источник

ЕО

Евгений Омельченко... in Go-go!
Никита
Нужен, если процесс вызывает другой процесс
Нет, баш вызывает другие процессы и ничего не делает такого
источник

ЕО

Евгений Омельченко... in Go-go!
Вы явно делаете что-то неправильно
источник

Н

Никита in Go-go!
Хм, окей. Мне надо запускать процесс, и читать/писать в него как в обычном терминале. Какой тогда подход выбрать?
источник

p

pragus in Go-go!
Евгений Омельченко
Можно смотреть, что процесс в анинтерраптбл слипе. Можно его стрейсить и ждать пока он во врайте окажется. Но лучше так не делать, конечно
Ну мало ли что он там уснул ))
источник

ЕО

Евгений Омельченко... in Go-go!
Никита
Хм, окей. Мне надо запускать процесс, и читать/писать в него как в обычном терминале. Какой тогда подход выбрать?
Прямо как в обычном терминале или достаточно просто потоки байт писать?
источник

p

pragus in Go-go!
сонная википедия
то что программа попросила ОС уведомить ее о том, когда появятся данные в stdin
вызов select например
И дальше что? :))
источник

Н

Никита in Go-go!
Евгений Омельченко
Прямо как в обычном терминале или достаточно просто потоки байт писать?
Можно потоки байт. Суть в реализации взаимодействия с процессом как в баше
источник

ВС

Владимир Столяров... in Go-go!
Никита
Можно потоки байт. Суть в реализации взаимодействия с процессом как в баше
источник

ЕО

Евгений Омельченко... in Go-go!
https://golang.org/pkg/os/exec/#Cmd.StdinPipe

Там даже пример есть
источник

Н

Никита in Go-go!
Посмотрю сейчас
источник

ЕО

Евгений Омельченко... in Go-go!
Пишите пока пишется, не ждите пока приложение что-либо прочитает
источник

Н

Никита in Go-go!
Там пример с просто писать, а у меня проблема в том, чтобы понимать, когда надо писать
источник

ЕО

Евгений Омельченко... in Go-go!
Когда можете написать -- пишите
источник

ЕО

Евгений Омельченко... in Go-go!
Данные никуда не пропадут
источник

ЕО

Евгений Омельченко... in Go-go!
Когда закончится место в пайпе Write просто залочится
источник

ЕО

Евгений Омельченко... in Go-go!
Когда приложение будет готово прочитать -- оно заберёт их из буфера пайпа
источник

DP

Daniel Podolsky in Go-go!
некоторые приложения очищают буфер перед тем, как запросить ввод
источник

DP

Daniel Podolsky in Go-go!
но тут уж вариантов немного. самый реальный - expect
источник

ЕО

Евгений Омельченко... in Go-go!
Daniel Podolsky
некоторые приложения очищают буфер перед тем, как запросить ввод
Ну тогда это vty нужен
источник