gf: Index | Files

package gproc

import ""

Package gproc implements management and communication for processes.


Package Files

gproc.go gproc_comm.go gproc_comm_receive.go gproc_comm_send.go gproc_manager.go gproc_process.go

func IsChild Uses

func IsChild() bool

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

func PPid Uses

func PPid() int

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

func PPidOS Uses

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 Uses

func Pid() int

Pid returns the pid of current process.

func SearchBinary Uses

func SearchBinary(file string) string

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

func SearchBinaryPath Uses

func SearchBinaryPath(file string) string

SearchBinaryPath searches the binary <file> in PATH environment.

func Send Uses

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

Send sends data to specified process of given pid.

func SetPPid Uses

func SetPPid(ppid int) error

SetPPid sets custom parent pid for current process.

func Shell Uses

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 Uses

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

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

func ShellRun Uses

func ShellRun(cmd string) error

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

func StartTime Uses

func StartTime() time.Time

StartTime returns the start time of current process.

func Uptime Uses

func Uptime() time.Duration

Uptime returns the duration which current process has been running

type Manager Uses

type Manager struct {
    // contains filtered or unexported fields


func NewManager Uses

func NewManager() *Manager


func (*Manager) AddProcess Uses

func (m *Manager) AddProcess(pid int)


func (*Manager) Clear Uses

func (m *Manager) Clear()


func (*Manager) GetProcess Uses

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


func (*Manager) KillAll Uses

func (m *Manager) KillAll() error


func (*Manager) NewProcess Uses

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


func (*Manager) Pids Uses

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


func (*Manager) Processes Uses

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


func (*Manager) RemoveProcess Uses

func (m *Manager) RemoveProcess(pid int)


func (*Manager) Send Uses

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


func (*Manager) SendTo Uses

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


func (*Manager) SignalAll Uses

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


func (*Manager) Size Uses

func (m *Manager) Size() int


func (*Manager) WaitAll Uses

func (m *Manager) WaitAll()


type MsgRequest Uses

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 Uses

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 Uses

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 Uses

type Process struct {
    Manager *Manager
    PPid    int

Process is the struct for a single process.

func NewProcess Uses

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

NewProcess creates and returns a new Process.

func NewProcessCmd Uses

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

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

func (*Process) Kill Uses

func (p *Process) Kill() error

Kill causes the Process to exit immediately.

func (*Process) Pid Uses

func (p *Process) Pid() int


func (*Process) Release Uses

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 Uses

func (p *Process) Run() error

Run executes the process in blocking way.

func (*Process) Send Uses

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

Send send custom data to the process.

func (*Process) Signal Uses

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 Uses

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.

Package gproc imports 21 packages (graph) and is imported by 1 packages. Updated 2020-03-28. Refresh now. Tools for package owners.