-
Notifications
You must be signed in to change notification settings - Fork 0
/
std.go
35 lines (29 loc) · 1.96 KB
/
std.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// Package run
package run
// StdInCh Канал с данными для потока STDIN. Канал должен быть закрыт там же где открывался.
// Функция читает канал и передаёт процессу данные, до тех пор пока канал открыт и процесс запущен.
func (run *impl) StdInCh(ch <-chan []byte) Interface { run.externalInpCh = ch; return run }
// StdIn Данные, отправляемые процессу в поток STDIN после запуска процесса.
func (run *impl) StdIn(buf []byte) Interface {
_, _ = run.bufInp.Write(buf)
chanSendSignal(run.onNewData)
return run
}
// StdOutCh Канал с данными полученными из процесса через поток STDOUT. Канал будет закрыт после завершения
// процесса. Канал не создаётся, если функция не вызывалась.
func (run *impl) StdOutCh() (ret <-chan []byte) {
run.debug("открыт внешний канал STDOUT")
run.externalOutCh = make(chan []byte, run.chanLen)
return run.externalOutCh
}
// StdOut Данные, полученные от процесса через поток STDOUT.
func (run *impl) StdOut() (ret []byte) { return run.bufOut.Bytes() }
// StdErrCh Канал с данными полученными из процесса через поток STDERR. Канал будет закрыт после завершения
// процесса. Канал не создаётся, если функция не вызывалась.
func (run *impl) StdErrCh() (ret <-chan []byte) {
run.debug("открыт внешний канал STDERR")
run.externalErrCh = make(chan []byte, run.chanLen)
return run.externalErrCh
}
// StdErr Данные, полученные от процесса через поток STDERR.
func (run *impl) StdErr() (ret []byte) { return run.bufErr.Bytes() }