Golang 之os包之 process 接口函数汇总

此篇记录 线程相关的接口函数,此部分例程待补充。

1.Process结构体

功能:Process存储了通过StartProcess创建的进程信息。

type Process struct {   
    Pid int                      //当前进程id
    handle uintptr        //处理指针     
    isdone uint32        //如果进程正在等待则该值非0,没有等待该值为0
    sigMu  sync.RWMutex //锁
}

1. FindProcess函数
func FindProcess(pid int) (p *Process, err error)    
功能:通过进程pid查找运行的进程,返回相关进程信息及在该过程中遇到的error

 
2. StartProcess函数
func StartProcess(name string, argv []string, attr *ProcAttr) (*Process, error) 
功能:StartProcess启动一个新的进程,其传入的name、argv和addr指定了程序、参数和属性;
StartProcess是一个低层次的接口。os/exec包提供了高层次的接口;如果出错,将会是*PathError错误。


3. Kill方法
func(p *Process) Kill() error           
功能:杀死进程并直接退出

4. Release方法
func (p *Process) Release() error        
功能:释放进程p的所有资源,之后进程p便不能够再被使用,只有Wati没有被调用时,才需要调用Release释放资源

5. Signal方法
func (p *Process) Signal(sig Signal) error    
功能:发送一个信号给进程p, 在windows中没有实现发送中断interrupt

5. Wait方法
func (p *Process) Wait() (*ProcessState, error)  
功能:Wait等待进程退出,并返回进程状态和错误。Wait释放进程相关的资源。在大多数的系统上,进程p必须是当前进程的子进程,否则会返回一个错误。

ProcessState结构体

功能:ProcessState存储了Wait函数报告的进程信息

type ProcessState struct {   
    pid    int                    
    status syscall.WaitStatus      //系统相关的状态信息
    rusage *syscall.Rusage
}

1. Exited方法
func (p *ProcessState) Exited() bool      
功能:判断程序是否已经退出

 

2. Pid方法
func (p *ProcessState) Pid() int                               
功能:返回退出进程的pid

 

3. String方法
func (p *ProcessState) String() string                    
功能:获取进程状态的字符串表示

 

4. Success方法
func (p *ProcessState) Success() bool                   
功能:判断程序是否成功退出,而Exited则仅仅只是判断其是否退出

 

5. Sys方法
func (p *ProcessState) Sys() interface{}
功能:返回有关进程的系统独立的退出信息。并将它转换为恰当的底层类型(比如Unix上的syscall.WaitStatus),主要用来获取进程退出相关资源。

 

6. SysUsage方法
func (p *ProcessState) SysUsage() interface{}        
功能:SysUsage返回关于退出进程的系统独立的资源使用信息。主要用来获取进程使用系统资源


7. SystemTime方法
func (p *ProcessState) SystemTime() time.Duration
功能:获取退出进程的内核态cpu使用时间

8. UserTime方法
func (p *ProcessState) UserTime() time.Duration    
功能:返回退出进程和子进程的用户态CPU使用时间

Signal结构体

功能:代表操作系统的信号,底层的实现是操作系统独立的,在Unix中是syscal.Signal。
type Signal interface {
    String() string   
    Signal() // 同其他字符串做区别
}

var (
       Interrupt Signal = syscall.SIGINT
        Kill      Signal = syscall.SIGKILL
)

在所有系统中都能够使用的是interrupe,给进程发送一个信号,强制杀死该进程

 

SyscallError结构体

功能:SyscallError记录了一个特定系统调用的错误,主要用来返回SyscallError的字符串表示。

 

type SyscallError struct {     

Syscall string  Err     error

}

func (e *SyscallError) Error() string   

功能:返回SyscallError的字符串表示
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Go语言中,接口是一种定义行为的类型。通过实现接口,可以使不同的类型具有相同的方法集合,从而实现多态性。下面是在Go语言中实现接口函数的步骤: 1. 定义接口:首先需要定义一个接口接口由一组方法组成。方法可以是任何类型的函数,只要它们具有相同的名称和签名。 2. 实现接口:接下来,需要在一个类型上实现接口中定义的方法。要实现一个接口,只需在类型上定义与接口中方法签名相匹配的方法即可。 3. 使用接口:一旦一个类型实现了接口,就可以将该类型的实例赋值给接口类型的变量。通过接口变量,可以调用实现了接口方法的类型的方法。 下面是一个简单的示例,演示了如何在Go语言中实现接口函数: ```go // Step 1: 定义接口 type Shape interface { Area() float64 } // Step 2: 实现接口 type Rectangle struct { Width float64 Height float64 } func (r Rectangle) Area() float64 { return r.Width * r.Height } type Circle struct { Radius float64 } func (c Circle) Area() float64 { return math.Pi * c.Radius * c.Radius } // Step 3: 使用接口 func PrintArea(s Shape) { fmt.Println("Area:", s.Area()) } func main() { rect := Rectangle{Width: 3, Height: 4} circle := Circle{Radius: 5} PrintArea(rect) // 输出:Area: 12 PrintArea(circle) // 输出:Area: 78.53981633974483 } ``` 在上面的示例中,我们定义了一个`Shape`接口,它含一个`Area`方法。然后,我们分别在`Rectangle`和`Circle`类型上实现了`Area`方法。最后,在`main`函数中,我们创建了一个`Rectangle`类型的实例和一个`Circle`类型的实例,并将它们传递给`PrintArea`函数来打印它们的面积。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值