进程类

package
v0.0.0-...-2910145 Latest Latest
Warning

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

Go to latest
Published: Feb 14, 2024 License: MIT Imports: 32 Imported by: 0

Documentation

Overview

包gproc实现了对进程的管理和通信功能。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddSigHandler

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

AddSigHandler 为一个或多个自定义信号添加自定义处理函数。

func AddSigHandlerShutdown

func AddSigHandlerShutdown(handler ...SigHandler)

AddSigHandlerShutdown 添加自定义信号处理器以处理关闭信号: syscall.SIGINT(中断信号) syscall.SIGQUIT(退出并生成 core 文件信号) syscall.SIGKILL(强制终止信号,无法被捕获或忽略) syscall.SIGTERM(软件终止信号) syscall.SIGABRT(异常终止信号,如调用 abort 函数时触发)

func IsChild

func IsChild() bool

IsChild 检查并返回当前进程是否为子进程。 子进程是由另一个 gproc 进程 fork(派生)出来的。

func Listen

func Listen()

Listen阻塞并执行信号监听和处理。

func MustShell

func MustShell(ctx context.Context, cmd string, out io.Writer, in io.Reader)

MustShell 的行为与 Shell 相同,但如果出现任何错误,它会引发 panic。

func MustShellExec

func MustShellExec(ctx context.Context, cmd string, environment ...[]string) string

MustShellExec 的执行方式与 ShellExec 相同,但当出现任何错误时,它会触发 panic。

func MustShellRun

func MustShellRun(ctx context.Context, cmd string)

MustShellRun 的行为与 ShellRun 相同,但当出现任何错误时,它会触发 panic。

func PPid

func PPid() int

PPid 返回自定义父进程ID(如果存在),否则返回系统父进程ID。

func PPidOS

func PPidOS() int

PPidOS 返回当前进程的系统父进程ID。 注意,PPidOS 和 PPid 函数之间的区别在于:PPidOS 返回的是系统的父进程ID, 但若存在自定义父进程ID,PPid 函数可能会返回由 gproc 提供的自定义进程ID。

func Pid

func Pid() int

Pid 返回当前进程的进程ID。

func SearchBinary

func SearchBinary(file string) string

SearchBinary 在当前工作目录和PATH环境变量中搜索二进制文件 `file`。

func SearchBinaryPath

func SearchBinaryPath(file string) string

SearchBinaryPath在PATH环境变量中搜索二进制文件`file`。

func Send

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

Send 将数据发送给指定的进程ID(pid)所对应的进程。

func SetPPid

func SetPPid(ppid int) error

SetPPid 设置当前进程的自定义父进程ID。

func Shell

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

Shell 同步执行命令 `cmd`,并使用给定的输入管道 `in` 和输出管道 `out`。 命令 `cmd` 从输入管道 `in` 读取输入参数,并自动将其输出写入输出管道 `out`。

func ShellExec

func ShellExec(ctx context.Context, cmd string, environment ...[]string) (result string, err error)

ShellExec 同步执行给定的命令 `cmd`,并返回命令执行结果。

func ShellRun

func ShellRun(ctx context.Context, cmd string) error

ShellRun 同步执行给定的命令 `cmd`,并将命令结果输出到标准输出(stdout)。

func StartTime

func StartTime() time.Time

StartTime 返回当前进程的启动时间。

func Uptime

func Uptime() time.Duration

Uptime 返回当前进程已经运行的时间间隔

Types

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

Manager 是一个进程管理器,用于维护多个进程。

func NewManager

func NewManager() *Manager

NewManager 创建并返回一个新的进程管理器。

func (*Manager) AddProcess

func (m *Manager) AddProcess(pid int)

AddProcess 将一个进程添加到当前管理器中。 如果给定 `pid` 的进程不存在,则不做任何操作。

func (*Manager) Clear

func (m *Manager) Clear()

Clear 清除当前管理器中的所有进程。

func (*Manager) GetProcess

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

GetProcess 获取并返回一个 Process 对象。 如果未找到给定 `pid` 的进程,则返回 nil。

func (*Manager) KillAll

func (m *Manager) KillAll() error

KillAll杀掉当前管理器中的所有进程。

func (*Manager) NewProcess

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

NewProcess 创建并返回一个 Process 对象。

func (*Manager) Pids

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

Pids 获取并返回当前管理器中的所有进程ID数组。

func (*Manager) Processes

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

Processes 获取并返回当前管理器中的所有进程。

func (*Manager) RemoveProcess

func (m *Manager) RemoveProcess(pid int)

RemoveProcess 从当前管理器中移除一个进程。

func (*Manager) Send

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

Send 向当前管理器中的所有进程发送 data 字节。

func (*Manager) SendTo

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

SendTo 向当前管理器中指定进程发送数据字节。

func (*Manager) SignalAll

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

SignalAll 向当前管理器中的所有进程发送信号 `sig`。

func (*Manager) Size

func (m *Manager) Size() int

Size 返回当前管理器中进程的数量。

func (*Manager) WaitAll

func (m *Manager) WaitAll()

WaitAll等待直到所有进程退出。

type MsgRequest

type MsgRequest struct {
	SenderPid   int    // Sender PID.
	ReceiverPid int    // Receiver PID.
	Group       string // 消息组名称。
	Data        []byte // Request data.
}

MsgRequest 是用于进程间通信的请求结构体。

func Receive

func Receive(group ...string) *MsgRequest

接收区块并通过本地TCP监听从其他进程接收消息。 注意,只有当调用此函数时,才会启用TCP监听服务。

type MsgResponse

type MsgResponse struct {
	Code    int    // 1: 表示成功;其它值:表示错误
	Message string // Response message.
	Data    []byte // Response data.
}

MsgResponse 是用于进程间通信的响应结构体。

type Process

type Process struct {
	exec.Cmd
	Manager *Manager
	PPid    int
}

Process是用于单个进程的结构体。

func NewProcess

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

NewProcess 创建并返回一个新的 Process。

func NewProcessCmd

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

NewProcessCmd根据给定的命令和可选的环境变量数组创建并返回一个进程。

func (*Process) Kill

func (p *Process) Kill() (err error)

Kill 导致 Process 立即退出。

func (*Process) Pid

func (p *Process) Pid() int

Pid 获取并返回当前进程的PID(进程标识符)

func (*Process) Release

func (p *Process) Release() error

Release 会释放与进程p关联的任何资源, 使其在未来无法使用。 只有在不调用Wait的情况下,才需要调用Release。

func (*Process) Run

func (p *Process) Run(ctx context.Context) error

Run以阻塞方式执行进程。

func (*Process) Send

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

Send 向进程发送自定义数据。

func (*Process) Signal

func (p *Process) Signal(sig os.Signal) error

Signal 向 Process 发送一个信号。 在 Windows 系统上发送 Interrupt 信号尚未实现。

func (*Process) Start

func (p *Process) Start(ctx context.Context) (int, error)

Start以非阻塞方式启动进程执行。 如果成功,返回pid;否则返回错误。

type SigHandler

type SigHandler func(sig os.Signal)

SigHandler 定义了一个用于信号处理的函数类型。

Jump to

Keyboard shortcuts

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