-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun_interface.go
104 lines (76 loc) · 6.14 KB
/
run_interface.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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package run
import (
"context"
"os"
)
// Interface Интерфейс пакета.
type Interface interface {
// Входящие и исходящие данные (STDIN, STDOUT, STDERR).
// Функции с каналами и со срезом байт могут быть использованы одновременно, учитывая особенность того что функции
// возвращающие данные в качестве среза блокируются до момента получения всех данных, в то время как в канал данные
// поступают без задержки.
// StdInCh Канал с данными для потока STDIN. Канал должен быть закрыт там же где открывался.
// Функция читает канал и передаёт процессу данные, до тех пор пока канал открыт и процесс запущен.
StdInCh(ch <-chan []byte) Interface
// StdIn Данные, отправляемые процессу в поток STDIN после запуска процесса.
StdIn(buf []byte) Interface
// StdOutCh Канал с данными полученными из процесса через поток STDOUT. Канал будет закрыт после завершения
// процесса. Канал не создаётся, если функция не вызывалась.
StdOutCh() (ret <-chan []byte)
// StdOut Данные, полученные от процесса через поток STDOUT.
StdOut() (ret []byte)
// StdErrCh Канал с данными полученными из процесса через поток STDERR. Канал будет закрыт после завершения
// процесса. Канал не создаётся, если функция не вызывалась.
StdErrCh() (ret <-chan []byte)
// StdErr Данные, полученные от процесса через поток STDERR.
StdErr() (ret []byte)
// Настройки запуска приложения.
// WorkingDirectory Назначение директории выполнения приложения. По умолчанию - текущая директория.
WorkingDirectory(dir string) Interface
// Environment Переменные окружения, устанавливаемые для приложения. Переменные указываются как "КЛЮЧ=Значение".
Environment(env ...string) Interface
// Chroot Запускаемое приложение выполняется в режиме chroot в указанной директории.
Chroot(dir string) Interface
// Sudo Запускаемый процесс будет запущен от указанного пользователя и группы.
// userID - Идентификатор пользователя.
// groupID - Идентификатор группы.
// noSetGroups - Флаг, указывающий не устанавливать дополнительные группы.
// groups - Массив идентификаторов дополнительных групп.
Sudo(userID uint32, groupID uint32, noSetGroups bool, groups ...uint32) Interface
// UserID Поиск идентификатора пользователя по названию пользователя.
UserID(userName string) (ret uint32, err error)
// GroupID Поиск идентификатора группы пользователя по названию группы.
GroupID(groupName string) (ret uint32, err error)
// Command Функция возвращает текущую запущенную команду.
Command() (ret []string)
// Debug Установка режима отладки.
Debug(isDebug bool) Interface
// Запуск и завершение приложения.
// Run Запуск приложения и возвращение из функции без ожидания завершения приложения.
// Если передан контекст не равный nil, тогда прерывание через контекст завершает работу приложения аналогично
// вызову функции Kill().
Run(ctx context.Context, args ...string) Interface
// RunWait Запуск приложения и ожидание завершения приложения.
// Если передан контекст не равный nil, тогда прерывание через контекст завершает работу приложения аналогично
// вызову функции Kill().
RunWait(ctx context.Context, args ...string) (ret *os.ProcessState, err error)
// Wait Ожидание завершения ранее запущенного приложения.
Wait() (ret *os.ProcessState, err error)
// LookPath Выполнение одноимённой утилиты exec.LookPath(), чтобы тыла под рукой,
// Ошибку выполнения функции можно получить через Error().
LookPath(proc string) (path string)
// Pid Возвращает PID процесса. Если процесс не был запущен, возвращается -1.
Pid() int
// Signal Отправка сигнала ранее запущенному приложению.
Signal(sig os.Signal) error
// Kill Завершение ранее запущенного приложения.
Kill() error
// Release Освобождение всех ресурсов запущенного приложения.
// Release необходимо выполнять только в случае если Wait() не работает.
Release() error
// Reset Завершение приложения, если оно было запущено, сброс всех настроек и подготовка пакета для
// повторного использования.
Reset() Interface
// Error Ошибка, возникшая в функции не возвращающей ошибки.
Error() error
}