2019-05-31 02:26:34 +03:00
|
|
|
// Package process executes a binary
|
|
|
|
package process
|
|
|
|
|
|
|
|
import (
|
|
|
|
"io"
|
|
|
|
|
2020-08-19 17:47:17 +03:00
|
|
|
"github.com/unistack-org/micro/v3/build"
|
2019-05-31 02:26:34 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
// Process manages a running process
|
|
|
|
type Process interface {
|
|
|
|
// Executes a process to completion
|
2020-08-11 18:51:58 +03:00
|
|
|
Exec(*Binary) error
|
2019-05-31 02:26:34 +03:00
|
|
|
// Creates a new process
|
2020-08-11 18:51:58 +03:00
|
|
|
Fork(*Binary) (*PID, error)
|
2019-05-31 02:26:34 +03:00
|
|
|
// Kills the process
|
|
|
|
Kill(*PID) error
|
|
|
|
// Waits for a process to exit
|
|
|
|
Wait(*PID) error
|
|
|
|
}
|
|
|
|
|
2020-08-11 18:51:58 +03:00
|
|
|
type Binary struct {
|
2019-11-19 19:09:43 +03:00
|
|
|
// Package containing executable
|
|
|
|
Package *build.Package
|
2019-09-14 07:33:14 +03:00
|
|
|
// The env variables
|
|
|
|
Env []string
|
|
|
|
// Args to pass
|
|
|
|
Args []string
|
2020-04-09 17:44:39 +03:00
|
|
|
// Initial working directory
|
|
|
|
Dir string
|
2019-05-31 02:26:34 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
// PID is the running process
|
|
|
|
type PID struct {
|
|
|
|
// ID of the process
|
|
|
|
ID string
|
|
|
|
// Stdin
|
|
|
|
Input io.Writer
|
|
|
|
// Stdout
|
|
|
|
Output io.Reader
|
|
|
|
// Stderr
|
|
|
|
Error io.Reader
|
|
|
|
}
|