golang标准库os模块-进程相关操作

该博客介绍了如何使用Golang的os模块进行进程相关操作,包括获取当前进程ID、父进程ID,启动新的进程,并设置其属性,如文件描述符和环境变量。示例中展示了启动记事本进程并延迟5秒后发送信号关闭进程。此外,还演示了如何通过进程ID查找和管理进程。
摘要由CSDN通过智能技术生成

golang标准库os模块-进程相关操作

package main

import (
	"fmt"
	"os"
	"time"
)

func main() {
	// 获取当前正在运行的进程id
	fmt.Printf("os.Getpid(): %v\n", os.Getpid())
	// 父id
	fmt.Printf("os.Getppid(): %v\n", os.Getppid())

	// 设置新进程的属性
	attr := &os.ProcAttr{
		// files指定新进程集成的活动文件对象
		// 前三个分别为 标准输入 标准输出 标准错误输出
		Files: []*os.File{
			os.Stdin,
			os.Stdout,
			os.Stderr,
		},
		// 新进程的环境变量
		Env: os.Environ(),
	}
	p, err := os.StartProcess("C:\\Windows\\System32\\notepad.exe", []string{"C:\\Windows\\System32\\notepad.exe", "D:\\a.txt"}, attr)
	if err != nil {
		fmt.Printf("err: %v\n", err)
	}
	fmt.Printf("p: %v\n", p)
	fmt.Println("进程ID--->", p.Pid)
	// 通过进程ID查找进程
	p2, err2 := os.FindProcess(p.Pid)
	if err2 != nil {
		fmt.Printf("err2: %v\n", err2)
	}
	fmt.Printf("p2: %v\n", p2)
	// 等一会,执行关闭进程
	time.AfterFunc(time.Second*5, func() {
		// 关闭进程
		p.Signal(os.Kill)
	})
	// 等待进程退出
	ps, err3 := p.Wait()
	if err3 != nil {
		fmt.Printf("err3: %v\n", err3)
	}
	fmt.Printf("ps.String(): %v\n", ps.String())

}

运行结果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值