gproc

package
v1.5.6 Latest Latest
Warning

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

Go to latest
Published: Feb 26, 2019 License: MIT Imports: 19 Imported by: 0

Documentation

Overview

Package gproc implements communication and management of processes.

进程管理/通信, 本进程管理从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(24bit)|接收进程PID(24bit)|分组长度(8bit)|分组名称(变长)|校验(32bit)|参数(变长)

func SetPPid

func SetPPid(ppid int)

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

func Shell

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

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

func ShellExec

func ShellExec(cmd string) (string, error)

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

func ShellRun

func ShellRun(cmd string) error

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

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