目录
- 3、Get系列函数
-
- 4、Is系列函数
-
- 5、Process系列函数
-
- 6、ProcessState系列函数
-
- 7、其它函数
- 7.1 func Clearenv()
- 7.2 func Environ() []string
- 7.3 func Exit(code int)
- 7.4 func Expand(s string, mapping func(string) string) string
- 7.5 func ExpandEnv(s string) string
- 7.6 func Hostname() (name string, err error)
- 7.7 func Lchown(name string, uid, gid int) error
- 7.8 func Link(oldname, newname string) error
- 7.9 func (e *LinkError) Error() string
- 7.10 func Readlink(name string) (string, error)
- 7.11 func Mkdir(name string, perm FileMode) error
- 7.12 func MkdirAll(path string, perm FileMode) error
- 7.13 func NewSyscallError(syscall string, err error) error
- 7.14 func (e *PathError) Error() string
- 7.15 func Remove(name string) error
- 7.16 func RemoveAll(name string) error
- 7.17 func Rename(oldname, newname string) error
- 7.18 func SameFile(fi1, fi2 FileInfo) bool
- 7.19 func Setenv(key, value string) error
- 7.20 func Symlink(oldname, newname string) error
- 7.21 func (e *SyscallError) Error() string
- 7.22 func TempDir() string
- 7.23 func Truncate(name string, size int64) error
3、Get系列函数
3.1 func Getegid() int
- 参数列表:无
- 返回值:
- 功能说明:这个函数主要是返回调用者的有效用户组id
3.2 func Getenv(key string) string
- 参数列表
- 返回值:
- 功能说明:这个函数主要是根据key来获取相当环境变量的值
3.3 func Geteuid() int
- 参数列表:无
- 返回值:
- 功能说明:这个函数主要是返回调用者的有效用户id
3.4 func Getgid() int
- 参数列表:无
- 返回值:
- 功能说明:这个函数主要是返回调用者的用户组id
3.5 func Getgroups() ([]int, error)
- 参数列表:无
- 返回值:
- []int 调用者所属用户组的所有id
- error 返回错误信息对象
- 功能说明:这个函数主要是返回调用者所属用户组的所有id
3.6 func Getpagesize() int
- 参数列表:无
- 返回值:
- 功能说明:这个函数主要是返回系统内存的大小
3.7 func Getpid() int
- 参数列表:无
- 返回值:
- 功能说明:这个函数主要是返回调用者进程id
3.8 func Getppid() int
- 参数列表:无
- 返回值:
- 功能说明:这个函数主要是返回调用者的父进程id
3.9 func Getuid() int
- 参数列表:无
- 返回值:- int 调用者的用户id
- 功能说明:这个函数主要是返回调用者的用户id
3.10 func Getwd() (pwd string, err error)
- 参数列表:无
- 返回值:
- 功能说明:这个函数主要是返回当前目录
func main() {
fmt.Printf("%d\n", os.Getegid())
fmt.Printf("%s\n", os.Getenv("LANG"))
fmt.Printf("%d\n", os.Geteuid())
fmt.Printf("%d\n", os.Getgid())
ids, err := os.Getgroups()
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Printf("%v\n", ids)
fmt.Printf("%d\n", os.Getpagesize())
fmt.Printf("%d\n", os.Getpid())
fmt.Printf("%d\n", os.Getppid())
fmt.Printf("%d\n", os.Getuid())
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
- 参数列表
- 返回值:
- 功能说明:这个函数主要是判断一个错误是否为文件或目录已存在的错误
4.2 func IsNotExist(err error) bool
- 参数列表
- 返回值:
- 功能说明:这个函数主要是判断一个错误是否为文件或目录不存在的错误
4.3 func IsPathSeparator(c uint8) bool
- 参数列表
- 返回值:
- 功能说明:这个函数主要是判断一个字符是否为目录路径分割符
4.4 func IsPermission(err error) bool
- 参数列表
- 返回值:
- 功能说明:这个函数主要是判断一个错误是否为无权限错误
func main() {
fmt.Printf("%t\n", os.IsExist(os.ErrExist))
fmt.Printf("%t\n", os.IsExist(errors.New("Custom Error")))
fmt.Printf("%t\n", os.IsNotExist(os.ErrNotExist))
fmt.Printf("%t\n", os.IsNotExist(errors.New("Custom Error")))
fmt.Printf("%t\n", os.IsPathSeparator('/'))
fmt.Printf("%t\n", os.IsPathSeparator('.'))
fmt.Printf("%t\n", os.IsPermission(os.ErrPermission))
fmt.Printf("%t\n", os.IsPermission(errors.New("Custom Error")))
}
5、Process系列函数
5.1 func FindProcess(pid int) (p *Process, err error)
- 参数列表
- 返回值:
- 返回p 返回进程结构体指针
- 返回err 返回error错误对象信息
- 功能说明:这个函数主要是通过进程pid查找一个进程对象
5.2 func (p *Process) Kill() error
- 参数列表
- 返回值:
- 功能说明:这个函数主要是杀死一个进程
5.3 func (p *Process) Release() error
- 参数列表
- 返回值:
- 功能说明:这个函数主要是释放一个进程相关的资源
5.4 func (p *Process) Signal(sig Signal) 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
- 参数列表
- 返回值:
- 功能说明:这个函数主要是判断一个进程是否已退出
6.2 func (p *ProcessState) Pid() int
- 参数列表
- 返回值:
- 功能说明:这个函数主要是获取已退出进程的pid
6.3 func (p *ProcessState) String() string
- 参数列表
- 返回值:
- 功能说明:这个函数主要是获取进程状态的字符串
6.4 func (p *ProcessState) Success() bool
- 参数列表
- 返回值:
- 功能说明:这个函数主要是判断一个进程是否已成功退出
6.5 func (p *ProcessState) Sys() interface{}
- 参数列表
- 返回值:
- 功能说明:这个函数主要是获取进程的退出信息
6.6 func (p *ProcessState) SystemTime() time.Duration
- 参数列表
- 返回值:
- 返回time.Duration 进程系统cpu使用时间
- 功能说明:这个函数主要是获取的进程的系统cpu使用时间
6.7 func (p *ProcessState) SysUsage() 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(code int)
- 参数列表:code 程序退出状态码
- 返回值:无
- 功能说明:这个函数主要是立即终止当前程序,defer的函数不会运行
7.4 func Expand(s string, mapping func(string) string) string
- 参数列表
- 返回值:string 替换后的字符串
- 功能说明:这个函数主要是把一个字符串里带
v
a
r
或
var或
var或{var}这样的字符串按自定义的规则替换成自己想要的字符串,如果没有对应的,则替换成空
7.5 func ExpandEnv(s string) string
- 参数列表
- 返回值:string 替换后的字符串
- 功能说明:这个函数主要是把一个字符串里带
v
a
r
或
var或
var或{var}这样的字符串替换成当前环境变量中的内容,如果没有对应的,则替换成空
7.6 func Hostname() (name string, err error)
- 参数列表:无
- 返回值:
- name hostname
- err 返回错误信息对象
- 功能说明:这个函数主要是返回机器的hostname
7.7 func Lchown(name string, uid, gid int) error
- 参数列表
- name 修改的文件名
- uid 用户id
- gid 用户组id
- 返回值:
- 功能说明:这个函数主要是修改一个文件的所属用户和用户组,如果文件为一个链接,修改的则是链接文件本身
7.8 func Link(oldname, newname string) error
- 参数列表
- oldname 源文件名
- newname 目标文件名
- 返回值:
- 功能说明:这个函数主要是给一个文件建立一个硬链接
7.9 func (e *LinkError) Error() string
- 参数列表:无
- 返回值:
- 返回string 返回LinkError的字符串形式
- 功能说明:这个函数主要是获取LinkError的字符串形式
7.10 func Readlink(name string) (string, error)
- 参数列表
- 返回值:
- string 目标文件
- error 返回错误信息对象
- 功能说明:这个函数主要是返回一个链接的目标文件
func main() {
mapping := func(s string) string {
m := map[string]string{"hello": "world", "go": "perfect program language"}
return m[s]
}
str := "Golang is$not a $go in the ${hello}!"
fmt.Printf("%s\n", os.Expand(str, mapping))
s := "The language path is: $LANG"
fmt.Printf("%s\n", os.ExpandEnv(s))
name, err := os.Hostname()
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Printf("The hostname is: %s\n", name)
lchownTest()
if err := os.Link("Hello.go", "Lhello.go"); err != nil {
fmt.Printf("Error: %v\n", err)
}
fmt.Printf("Lhello.go has created!\n")
le := &os.LinkError{
Op: "ln",
Old: "old",
New: "new",
Err: errors.New("ln Error!"),
}
fmt.Printf("%s\n", le.Error())
link, err := os.Readlink("src")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("%s\n", link)
}
func lchownTest() {
fi, err := os.Stat("Hello.go")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("Hello.go: uid=%d, gid=%d\n", fi.Sys().(*syscall.Stat_t).Uid, fi.Sys().(*syscall.Stat_t).Gid)
err = os.Lchown("Hello.go", 99, 99)
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fi, err = os.Stat("Hello.go")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("Now Hello.go: uid=%d, gid=%d\n", fi.Sys().(*syscall.Stat_t).Uid, fi.Sys().(*syscall.Stat_t).Gid)
}
7.11 func Mkdir(name string, perm FileMode) error
- 参数列表
- 返回值:
- 功能说明:这个函数主要是新建一个指定权限的目录
7.12 func MkdirAll(path string, perm FileMode) error
- 参数列表
- 返回值:
- 功能说明:这个函数主要是按文件目录路径新建目录,如果路径中的上一级目录不存在,会自动创建
7.13 func NewSyscallError(syscall string, err error) error
- 参数列表
- 返回值:
- 功能说明:这个函数主要是新建SyscallError对象
7.14 func (e *PathError) Error() string
- 参数列表:无
- 返回值:
- 返回string 返回PathError的字符串形式
- 功能说明:这个函数主要是获取PathError的字符串形式
7.15 func Remove(name string) error
- 参数列表
- 返回值:
- 功能说明:这个函数主要是删除一个文件或目录
7.16 func RemoveAll(name string) error
- 参数列表
- 返回值:
- 功能说明:这个函数主要是删除一个文件或目录(包括子目录)
7.17 func Rename(oldname, newname string) error
- 参数列表
- 返回值:
- 功能说明:这个函数主要是给一个文件重命名
7.18 func SameFile(fi1, fi2 FileInfo) bool
- 参数列表
- 返回值:
- 功能说明:这个函数主要是判断两个文件信息是否相同
7.19 func Setenv(key, value string) error
- 参数列表
- 返回值:
- 功能说明:这个函数主要是设置一个环境变量
7.20 func Symlink(oldname, newname string) error
- 参数列表
- 返回值:
- 功能说明:这个函数主要是给一个文件创建一个软链接
7.21 func (e *SyscallError) Error() string
- 参数列表:无
- 返回值:
- 返回string 返回SyscallError的字符串形式
- 功能说明:这个函数主要是获取SyscallError的字符串形式
7.22 func TempDir() string
- 参数列表:无
- 返回值:
- 功能说明:这个函数主要是获取系统的tmp目录
7.23 func Truncate(name string, size int64) error
- 参数列表
- name 文件名
- size 目标长度,单位为byte
- 返回值:
- 功能说明:这个函数主要是截短一个文件到新的长度
func main() {
if err := os.Mkdir("hello_go", 0777); err != nil {
fmt.Printf("Error: %v\n", err)
}
fmt.Printf("hello_go has been created!\n")
if err := os.MkdirAll("hello_go/world", 0777); err != nil {
fmt.Printf("Error: %v\n", err)
}
fmt.Printf("hello_go/world has been created!\n")
fmt.Printf("%s\n", os.NewSyscallError("custom", errors.New("something wrong")))
pe := &os.PathError{
Op: "cp",
Path: "/oh/my/god",
Err: errors.New("path does'n exists!"),
}
fmt.Printf("%s\n", pe.Error())
err := os.Remove("Hello.go")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("Hello.go has been removed!\n")
err = os.RemoveAll("hello_go/world")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("hello_go/world has been removed!\n")
err = os.Rename("Hello.go", "World.go")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("Hello.go has been renamed to World.go!\n")
fi1, err := os.Stat("Hello.go")
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fi2, err := os.Stat("World.go")
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Printf("%t\n", os.SameFile(fi1, fi2))
fmt.Printf("%t\n", os.SameFile(fi1, fi1))
fmt.Printf("Path of go is: %s\n", os.Getenv("go"))
if err := os.Setenv("go", "/path/to/go"); err != nil {
fmt.Printf("Error: %v", err)
}
fmt.Printf("Now Path of go is: %s\n", os.Getenv("go"))
if err := os.Symlink("Hello.go", "Lhello.go"); err != nil {
fmt.Printf("Error: %v", err)
return
}
fmt.Printf("The Hello.go's symbolic link Lhello.go has been created!\n")
se := &os.SyscallError{
Syscall: "/xx",
Err: errors.New("Syscall Error!"),
}
fmt.Printf("%s\n", se.Error())
fmt.Printf("The temp dir is: %s\n", os.TempDir())
fi, err := os.Stat("Hello.go")
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Printf("The Hello.go's size is: %d\n", fi.Size())
if err = os.Truncate("Hello.go", 10); err != nil {
fmt.Printf("Error: %v\n", err)
}
fi, err = os.Stat("Hello.go")
if err != nil {
fmt.Printf("Error: %v\n", err)
}
fmt.Printf("Now the Hello.go's size is: %d\n", fi.Size())
}