• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

Next
Prev

Golang——os包详解(二)

Data: 2016-01-21 08:49:07Form: JournalClick: 5

接上文:【Golang——os包详解(一)】

3、Get系列函数

3.1 func Getegid() int
  • 参数列表:无
  • 返回值:
    • int 调用者的有效用户组id
  • 功能说明:这个函数主要是返回调用者的有效用户组id
3.2 func Getenv(key string) string
  • 参数列表
    • key 环境变量的key
  • 返回值:
    • string 返回环境变量的key对应的值
  • 功能说明:这个函数主要是根据key来获取相当环境变量的值
3.3 func Geteuid() int
  • 参数列表:无
  • 返回值:
    • int 调用者的有效用户id
  • 功能说明:这个函数主要是返回调用者的有效用户id
3.4 func Getgid() int
  • 参数列表:无
  • 返回值:
    • int 调用者的用户组id
  • 功能说明:这个函数主要是返回调用者的用户组id
3.5 func Getgroups() ([]int, error)
  • 参数列表:无
  • 返回值:
    • []int 调用者所属用户组的所有id
    • error 返回错误信息对象
  • 功能说明:这个函数主要是返回调用者所属用户组的所有id
3.6 func Getpagesize() int
  • 参数列表:无
  • 返回值:
    • int 返回系统内在的大小,单位为MB
  • 功能说明:这个函数主要是返回系统内存的大小
3.7 func Getpid() int
  • 参数列表:无
  • 返回值:
    • int 返回调用者进程id
  • 功能说明:这个函数主要是返回调用者进程id
3.8 func Getppid() int
  • 参数列表:无
  • 返回值:
    • int 返回调用者的父进程id
  • 功能说明:这个函数主要是返回调用者的父进程id
3.9 func Getuid() int
  • 参数列表:无
  • 返回值:- int 调用者的用户id
  • 功能说明:这个函数主要是返回调用者的用户id
3.10 func Getwd() (pwd string, err error)
  • 参数列表:无
  • 返回值:
    • pwd 当前目录
    • err 返回错误信息对象
  • 功能说明:这个函数主要是返回当前目录
func main() {
	fmt.Printf("%d\n", os.Getegid()) //20

	fmt.Printf("%s\n", os.Getenv("LANG")) //zh_CN.UTF-8

	fmt.Printf("%d\n", os.Geteuid()) //501

	fmt.Printf("%d\n", os.Getgid()) //20

	ids, err := os.Getgroups()
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	fmt.Printf("%v\n", ids) //[20 12 61 79 80 81 98 33 100 204 250 395 398 399 400 701]

	fmt.Printf("%d\n", os.Getpagesize()) //4096

	fmt.Printf("%d\n", os.Getpid()) //2101

	fmt.Printf("%d\n", os.Getppid()) //584

	fmt.Printf("%d\n", os.Getuid()) //501

	pwd, err := os.Getwd()
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	fmt.Printf("The current directory is: %s\n", pwd)
}
 

4、Is系列函数

4.1 func IsExist(err error) bool
  • 参数列表
    • err 错误信息对象
  • 返回值:
    • bool 是否为文件或目录已存在的错误
  • 功能说明:这个函数主要是判断一个错误是否为文件或目录已存在的错误
4.2 func IsNotExist(err error) bool
  • 参数列表
    • err 错误信息对象
  • 返回值:
    • bool 是否为文件或目录不存在的错误
  • 功能说明:这个函数主要是判断一个错误是否为文件或目录不存在的错误
4.3 func IsPathSeparator(c uint8) bool
  • 参数列表
    • c 判断字符
  • 返回值:
    • bool 是否为目录路径分割符
  • 功能说明:这个函数主要是判断一个字符是否为目录路径分割符
4.4 func IsPermission(err error) bool
  • 参数列表
    • err 错误信息对象
  • 返回值:
    • bool 是否为无权限错误
  • 功能说明:这个函数主要是判断一个错误是否为无权限错误
func main() {
	fmt.Printf("%t\n", os.IsExist(os.ErrExist))                //true
	fmt.Printf("%t\n", os.IsExist(errors.New("Custom Error"))) //false

	fmt.Printf("%t\n", os.IsNotExist(os.ErrNotExist))             //true
	fmt.Printf("%t\n", os.IsNotExist(errors.New("Custom Error"))) //false

	fmt.Printf("%t\n", os.IsPathSeparator('/')) //true
	fmt.Printf("%t\n", os.IsPathSeparator('.')) //false

	fmt.Printf("%t\n", os.IsPermission(os.ErrPermission))           //true
	fmt.Printf("%t\n", os.IsPermission(errors.New("Custom Error"))) //false
}
 

5、Process系列函数

5.1 func FindProcess(pid int) (p *Process, err error)
  • 参数列表
    • pid 进程pid
  • 返回值:
    • 返回p 返回进程结构体指针
    • 返回err 返回error错误对象信息
  • 功能说明:这个函数主要是通过进程pid查找一个进程对象
5.2 func (p *Process) Kill() error
  • 参数列表
  • 返回值:
    • 返回error 返回error错误对象信息
  • 功能说明:这个函数主要是杀死一个进程
5.3 func (p *Process) Release() error
  • 参数列表
  • 返回值:
    • 返回error 返回error错误对象信息
  • 功能说明:这个函数主要是释放一个进程相关的资源
5.4 func (p *Process) Signal(sig Signal) error
  • 参数列表
    • sig 系统信号
  • 返回值:
    • 返回error 返回error错误对象信息
  • 功能说明:这个函数主要是给一个进程发送一个信号
5.5 func StartProcess(name string, argv []string, attr *ProcAttr) (*Process, error)
  • 参数列表
    • name 执行命令
    • argv 命令参数
    • attr 命令相关环境参数
  • 返回值:
    • 返回*Process 返回进程结构体指针
    • 返回error 返回error错误对象信息
  • 功能说明:这个函数主要是启动一个进程
5.6 func (p *Process) Wait() (*ProcessState, error)
  • 参数列表
  • 返回值:
    • 返回*ProcessState 返回进程状态结构体指针
    • 返回error 返回error错误对象信息
  • 功能说明:这个函数主要是等待一个进程执行完成
func main() {
	processFindTest()

	processKillTest()

	processReleaseTest()

	processSignal()

	processStartTest()

	processWait()
}

func processFindTest() {
	p, err := os.FindProcess(12)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	fmt.Printf("Process info: %+v\n", p)
}

func processKillTest() {
	attr := &os.ProcAttr{
		Files: []*os.File{os.Stdin, os.Stdout},
		Env:   os.Environ(),
	}
	p, err := os.StartProcess("/bin/pwd", []string{"/bin/pwd"}, attr)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	fmt.Printf("Process info: %+v\n", p)
	if err := p.Kill(); err != nil {
		fmt.Printf("Error: %v\n", err)
	}
}

func processReleaseTest() {
	attr := &os.ProcAttr{
		Files: []*os.File{os.Stdin, os.Stdout},
		Env:   os.Environ(),
	}
	p, err := os.StartProcess("/bin/pwd", []string{"/bin/pwd"}, attr)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	fmt.Printf("Process info: %+v\n", p)
	if err := p.Release(); err != nil {
		fmt.Printf("Error: %v\n", err)
	}
}

func processSignal() {
	attr := &os.ProcAttr{
		Files: []*os.File{os.Stdin, os.Stdout},
		Env:   os.Environ(),
	}
	p, err := os.StartProcess("/bin/pwd", []string{"/bin/pwd"}, attr)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	fmt.Printf("Process info: %+v\n", p)
	if err := p.Signal(os.Kill); err != nil {
		fmt.Printf("Error: %v\n", err)
	}
}

func processStartTest() {
	attr := &os.ProcAttr{
		Files: []*os.File{os.Stdin, os.Stdout},
		Env:   os.Environ(),
	}
	p, err := os.StartProcess("/bin/pwd", []string{"/bin/pwd"}, attr)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	fmt.Printf("Process info: %+v\n", p)
}

func processWait() {
	attr := &os.ProcAttr{
		Files: []*os.File{os.Stdin, os.Stdout},
		Env:   os.Environ(),
	}
	p, err := os.StartProcess("/bin/pwd", []string{"/bin/pwd"}, attr)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	ps, _ := p.Wait()
	fmt.Printf("Process stat: %+v\n", ps)
}
 

6、ProcessState系列函数

6.1 func (p *ProcessState) Exited() bool
  • 参数列表
  • 返回值:
    • 返回bool 进程是否已退出
  • 功能说明:这个函数主要是判断一个进程是否已退出
6.2 func (p *ProcessState) Pid() int
  • 参数列表
  • 返回值:
    • 返回int 已退出进程的pid
  • 功能说明:这个函数主要是获取已退出进程的pid
6.3 func (p *ProcessState) String() string
  • 参数列表
  • 返回值:
    • 返回string 进程状态的字符串
  • 功能说明:这个函数主要是获取进程状态的字符串
6.4 func (p *ProcessState) Success() bool
  • 参数列表
  • 返回值:
    • 返回bool 进程是否已成功退出
  • 功能说明:这个函数主要是判断一个进程是否已成功退出
6.5 func (p *ProcessState) Sys() interface{}
  • 参数列表
  • 返回值:
    • 返回interface{}
  • 功能说明:这个函数主要是获取进程的退出信息
6.6 func (p *ProcessState) SystemTime() time.Duration
  • 参数列表
  • 返回值:
    • 返回time.Duration 进程系统cpu使用时间
  • 功能说明:这个函数主要是获取的进程的系统cpu使用时间
6.7 func (p *ProcessState) SysUsage() interface{}
  • 参数列表
  • 返回值:
    • 返回interface{}
  • 功能说明:这个函数主要是获取进程资源使用情况
6.8 func (p *ProcessState) UserTime() time.Duration
  • 参数列表
  • 返回值:
    • 返回time.Duration 进程用户cpu使用时间
  • 功能说明:这个函数主要是获取的进程的用户cpu使用时间
func main() {
	stateExitedTest()

	statePidTest()

	stateStringTest()

	stateSuccessTest()

	stateSysTest()

	stateSystemTimeTest()

	stateSysUsageTest()

	stateUserTime()
}

func stateExitedTest() {
	attr := &os.ProcAttr{
		Files: []*os.File{os.Stdin, os.Stdout},
		Env:   os.Environ(),
	}
	p, err := os.StartProcess("/bin/pwd", []string{"/bin/pwd"}, attr)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	ps, _ := p.Wait()
	fmt.Printf("Process has been exited?: %t\n", ps.Exited())
}

func statePidTest() {
	attr := &os.ProcAttr{
		Files: []*os.File{os.Stdin, os.Stdout},
		Env:   os.Environ(),
	}
	p, err := os.StartProcess("/bin/pwd", []string{"/bin/pwd"}, attr)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	ps, _ := p.Wait()
	fmt.Printf("Process pid is: %d\n", ps.Pid())
}

func stateStringTest() {
	attr := &os.ProcAttr{
		Files: []*os.File{os.Stdin, os.Stdout},
		Env:   os.Environ(),
	}
	p, err := os.StartProcess("/bin/pwd", []string{"/bin/pwd"}, attr)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	ps, _ := p.Wait()
	fmt.Printf("Process stat: %s\n", ps.String())
}

func stateSuccessTest() {
	attr := &os.ProcAttr{
		Files: []*os.File{os.Stdin, os.Stdout},
		Env:   os.Environ(),
	}
	p, err := os.StartProcess("/bin/pwd", []string{"/bin/pwd"}, attr)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	ps, _ := p.Wait()
	fmt.Printf("Process has been exited successfully?: %t\n", ps.Success())
}

func stateSysTest() {
	attr := &os.ProcAttr{
		Files: []*os.File{os.Stdin, os.Stdout},
		Env:   os.Environ(),
	}
	p, err := os.StartProcess("/bin/pwd", []string{"/bin/pwd"}, attr)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	ps, _ := p.Wait()
	fmt.Printf("Process exit status: %+v\n", ps.Sys())
}

func stateSystemTimeTest() {
	attr := &os.ProcAttr{
		Files: []*os.File{os.Stdin, os.Stdout},
		Env:   os.Environ(),
	}
	p, err := os.StartProcess("/bin/pwd", []string{"/bin/pwd"}, attr)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	ps, _ := p.Wait()
	fmt.Printf("Process system cpu time: %+v\n", ps.SystemTime())
}

func stateSysUsageTest() {
	attr := &os.ProcAttr{
		Files: []*os.File{os.Stdin, os.Stdout},
		Env:   os.Environ(),
	}
	p, err := os.StartProcess("/bin/pwd", []string{"/bin/pwd"}, attr)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	ps, _ := p.Wait()
	fmt.Printf("Process resource usage: %+v\n", ps.SysUsage())
}

func stateUserTime() {
	attr := &os.ProcAttr{
		Files: []*os.File{os.Stdin, os.Stdout},
		Env:   os.Environ(),
	}
	p, err := os.StartProcess("/bin/pwd", []string{"/bin/pwd"}, attr)
	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	ps, _ := p.Wait()
	fmt.Printf("Process user cpu time: %+v\n", ps.UserTime())
}
 

7、其它函数

7.1 func Clearenv()
  • 参数列表:无
  • 返回值:无
  • 功能说明:这个函数主要是清空当前环境变量
7.2 func Environ() []string
  • 参数列表:无
  • 返回值:[]string 环境变量
  • 功能说明:这个函数主要是获取当前环境变量
7.3 func Exit(c
Name:
<提交>