gproc

package
v1.16.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 1, 2021 License: MIT Imports: 26 Imported by: 35

Documentation

Overview

Package gproc implements management and communication for processes.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddSigHandler added in v1.15.2

func AddSigHandler(handler SigHandler, signals ...os.Signal)

AddSigHandler adds custom signal handler for custom one or more signals.

func AddSigHandlerShutdown added in v1.15.2

func AddSigHandlerShutdown(handler ...SigHandler)

AddSigHandlerShutdown adds custom signal handler for shutdown signals: syscall.SIGINT, syscall.SIGQUIT, syscall.SIGKILL, syscall.SIGTERM, syscall.SIGABRT.

func IsChild

func IsChild() bool

IsChild checks and returns whether current process is a child process. A child process is forked by another gproc process.

func Listen added in v1.15.2

func Listen()

Listen blocks and does signal listening and handling.

func PPid

func PPid() int

PPid returns the custom parent pid if exists, or else it returns the system parent pid.

func PPidOS

func PPidOS() int

PPidOS returns the system parent pid of current process. Note that the difference between PPidOS and PPid function is that the PPidOS returns the system ppid, but the PPid functions may return the custom pid by gproc if the custom ppid exists.

func Pid

func Pid() int

Pid returns the pid of current process.

func SearchBinary added in v1.10.1

func SearchBinary(file string) string

SearchBinary searches the binary <file> in current working folder and PATH environment.

func SearchBinaryPath added in v1.11.4

func SearchBinaryPath(file string) string

SearchBinaryPath searches the binary <file> in PATH environment.

func Send

func Send(pid int, data []byte, group ...string) error

Send sends data to specified process of given pid.

func SetPPid

func SetPPid(ppid int) error

SetPPid sets custom parent pid for current process.

func Shell

func Shell(cmd string, out io.Writer, in io.Reader) error

Shell executes command <cmd> synchronizingly with given input pipe <in> and output pipe <out>. The command <cmd> reads the input parameters from input pipe <in>, and writes its output automatically to output pipe <out>.

func ShellExec

func ShellExec(cmd string, environment ...[]string) (string, error)

ShellExec executes given command <cmd> synchronizingly and returns the command result.

func ShellRun

func ShellRun(cmd string) error

ShellRun executes given command <cmd> synchronizingly and outputs the command result to the stdout.

func StartTime

func StartTime() time.Time

StartTime returns the start time of current process.

func Uptime

func Uptime() time.Duration

Uptime returns the duration which current process has been running

Types

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

Manager is a process manager maintaining multiple processes.

func NewManager

func NewManager() *Manager

NewManager creates and returns a new process manager.

func (*Manager) AddProcess

func (m *Manager) AddProcess(pid int)

AddProcess adds a process to current manager. It does nothing if the process with given `pid` does not exist.

func (*Manager) Clear

func (m *Manager) Clear()

Clear removes all processes in current manager.

func (*Manager) GetProcess

func (m *Manager) GetProcess(pid int) *Process

GetProcess retrieves and returns a Process object. It returns nil if it does not find the process with given `pid`.

func (*Manager) KillAll

func (m *Manager) KillAll() error

KillAll kills all processes in current manager.

func (*Manager) NewProcess

func (m *Manager) NewProcess(path string, args []string, environment []string) *Process

NewProcess creates and returns a Process object.

func (*Manager) Pids

func (m *Manager) Pids() []int

Pids retrieves and returns all process id array in current manager.

func (*Manager) Processes

func (m *Manager) Processes() []*Process

Processes retrieves and returns all processes in current manager.

func (*Manager) RemoveProcess

func (m *Manager) RemoveProcess(pid int)

RemoveProcess removes a process from current manager.

func (*Manager) Send

func (m *Manager) Send(data []byte)

Send sends data bytes to all processes in current manager.

func (*Manager) SendTo

func (m *Manager) SendTo(pid int, data []byte) error

SendTo sneds data bytes to specified processe in current manager.

func (*Manager) SignalAll

func (m *Manager) SignalAll(sig os.Signal) error

SignalAll sends a signal `sig` to all processes in current manager.

func (*Manager) Size

func (m *Manager) Size() int

Size returns the size of processes in current manager.

func (*Manager) WaitAll

func (m *Manager) WaitAll()

WaitAll waits until all process exit.

type MsgRequest added in v1.10.1

type MsgRequest struct {
	SendPid int    // Sender PID.
	RecvPid int    // Receiver PID.
	Group   string // Message group name.
	Data    []byte // Request data.
}

MsgRequest is the request structure for process communication.

func Receive

func Receive(group ...string) *MsgRequest

Receive blocks and receives message from other process using local TCP listening. Note that, it only enables the TCP listening service when this function called.

type MsgResponse added in v1.10.1

type MsgResponse struct {
	Code    int    // 1: OK; Other: Error.
	Message string // Response message.
	Data    []byte // Response data.
}

MsgResponse is the response structure for process communication.

type Process

type Process struct {
	exec.Cmd
	Manager *Manager
	PPid    int
}

Process is the struct for a single process.

func NewProcess

func NewProcess(path string, args []string, environment ...[]string) *Process

NewProcess creates and returns a new Process.

func NewProcessCmd added in v1.10.1

func NewProcessCmd(cmd string, environment ...[]string) *Process

NewProcessCmd creates and returns a process with given command and optional environment variable array.

func (*Process) Kill

func (p *Process) Kill() error

Kill causes the Process to exit immediately.

func (*Process) Pid

func (p *Process) Pid() int

Pid retrieves and returns the PID for the process.

func (*Process) Release

func (p *Process) Release() error

Release releases any resources associated with the Process p, rendering it unusable in the future. Release only needs to be called if Wait is not.

func (*Process) Run

func (p *Process) Run() error

Run executes the process in blocking way.

func (*Process) Send

func (p *Process) Send(data []byte) error

Send sends custom data to the process.

func (*Process) Signal

func (p *Process) Signal(sig os.Signal) error

Signal sends a signal to the Process. Sending Interrupt on Windows is not implemented.

func (*Process) Start

func (p *Process) Start() (int, error)

Start starts executing the process in non-blocking way. It returns the pid if success, or else it returns an error.

type SigHandler added in v1.15.2

type SigHandler func(sig os.Signal)

SigHandler defines a function type for signal handling.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL