gproc

package
v0.0.0-...-3631402 Latest Latest
Warning

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

Go to latest
Published: Aug 6, 2018 License: MIT Imports: 16 Imported by: 0

Documentation

Overview

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

进程管理.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsChild

func IsChild() bool

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

func PPid

func PPid() int

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

func PPidOS

func PPidOS() int

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

func Pid

func Pid() int

获取当前进程ID

func Send

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

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

func SetPPid

func SetPPid(ppid int)

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

func StartTime

func StartTime() time.Time

进程开始执行时间

func Uptime

func Uptime() int

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

Types

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

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

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 Msg

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

TCP通信数据结构定义

func Receive

func Receive(group ...string) *Msg

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

type Process

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

子进程

func NewProcess

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

创建一个进程(不执行)

func (*Process) Kill

func (p *Process) Kill() error

Kill causes the Process to exit immediately.

func (*Process) Pid

func (p *Process) Pid() int

PID

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

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

func (*Process) Send

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

向进程发送消息

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)

开始执行(非阻塞)

Jump to

Keyboard shortcuts

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