gf: github.com/johng-cn/gf/g/os/gproc Index | Files

package gproc

import "github.com/johng-cn/gf/g/os/gproc"

Package gproc implements communication and management of processes.

进程管理/通信, 本进程管理从syscall, os.StartProcess, exec.Cmd都使用过, 最后采用了exec.Cmd来实现多进程管理,这是一个顶层的跨平台封装,兼容性更好,另外两个是偏底层的接口。

进程管理.

Index

Package Files

gproc.go gproc_comm.go gproc_comm_receive.go gproc_comm_send.go gproc_manager.go gproc_proccess.go

func IsChild Uses

func IsChild() bool

判断当前进程是否为gproc创建的子进程

func PPid Uses

func PPid() int

获取父进程ID(gproc父进程,如果当前进程本身就是父进程,那么返回自身的pid,不存在时则使用系统父进程)

func PPidOS Uses

func PPidOS() int

获取父进程ID(系统父进程)

func Pid Uses

func Pid() int

获取当前进程ID

func Send Uses

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

向指定gproc进程发送数据 数据格式:总长度(24bit)|发送进程PID(24bit)|接收进程PID(24bit)|分组长度(8bit)|分组名称(变长)|校验(32bit)|参数(变长)

func SetPPid Uses

func SetPPid(ppid int)

设置gproc父进程ID,当ppid为0时表示该进程为gproc主进程,否则为gproc子进程

func Shell Uses

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

阻塞执行shell指令,并给定输入输出对象

func ShellExec Uses

func ShellExec(cmd string) (string, error)

阻塞执行shell指令,并返回输出结果(如果需要异步,请使用goroutine)

func ShellRun Uses

func ShellRun(cmd string) error

阻塞执行shell指令,并输出结果当终端(如果需要异步,请使用goroutine)

func StartTime Uses

func StartTime() time.Time

进程开始执行时间

func Uptime Uses

func Uptime() int

进程已经运行的时间(毫秒)

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

获取所有的进程pid,构成列表返回

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 Msg Uses

type Msg struct {
    Pid   int    // PID,来源哪个进程
    Data  []byte // 数据
    Group string // 分组名称
}

TCP通信数据结构定义

func Receive Uses

func Receive(group ...string) *Msg

获取其他进程传递到当前进程的消息包,阻塞执行。

type Process Uses

type Process struct {
    exec.Cmd
    Manager *Manager // 所属进程管理器
    PPid    int      // 自定义关联的父进程ID
}

子进程

func NewProcess Uses

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

创建一个进程(不执行)

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

PID

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

运行进程(阻塞等待执行完毕)

func (*Process) Send Uses

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

向进程发送消息

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)

开始执行(非阻塞)

Package gproc imports 18 packages (graph). Updated 2019-01-16. Refresh now. Tools for package owners.