Package gproc implements management and communication for processes.



    This section is empty.


    This section is empty.


    func AddSigHandler

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

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

      func AddSigHandlerShutdown

      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

          func Listen()

            ListenSignal 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

                  func SearchBinary(file string) string

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

                    func SearchBinaryPath

                    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


                                    type Manager

                                    type Manager struct {
                                    	// contains filtered or unexported fields


                                      func NewManager

                                      func NewManager() *Manager


                                        func (*Manager) AddProcess

                                        func (m *Manager) AddProcess(pid int)


                                          func (*Manager) Clear

                                          func (m *Manager) Clear()


                                            func (*Manager) GetProcess

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


                                              func (*Manager) KillAll

                                              func (m *Manager) KillAll() error


                                                func (*Manager) NewProcess

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


                                                  func (*Manager) Pids

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


                                                    func (*Manager) Processes

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


                                                      func (*Manager) RemoveProcess

                                                      func (m *Manager) RemoveProcess(pid int)


                                                        func (*Manager) Send

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


                                                          func (*Manager) SendTo

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


                                                            func (*Manager) SignalAll

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


                                                              func (*Manager) Size

                                                              func (m *Manager) Size() int


                                                                func (*Manager) WaitAll

                                                                func (m *Manager) WaitAll()


                                                                  type MsgRequest

                                                                  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

                                                                      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 {
                                                                        	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

                                                                            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


                                                                                  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 send 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

                                                                                            type SigHandler func(sig os.Signal)

                                                                                              SigHandler defines a function type for signal handling.