跳到主要内容

Go 标准库-os

接口概览

路径
func IsPathSeparator(c uint8) bool //是否是路径分隔符,MacOx的分隔符是 "/"


运行时状态
func Getuid() int // 获取调用者用户id
func Geteuid() int // 获取调用者有效用户id
func Getgid() int // 获取调用者的组id
func Getegid() int // 返回调用者的有效组ID
func Getgroups() ([]int, error) // 返回调用者从属的组id
func Exit(code int) // 系统退出,其中0表示执行成功并退出,非0表示错误并退出,其中执行Exit后程序会直接退出,defer函数不会执行.
func Getpagesize() int // 底层的系统内存页的尺寸
func Executable() (string, error) // 返回执行当前进程的程序的路径


执行相关
type Process
func FindProcess(pid int) (*Process, error) // 通过pid寻找进程
func StartProcess(name string, argv []string, attr *ProcAttr) (*Process, error) // StartProcess使用提供的属性、程序名、命令行参数开始一个新进程。StartProcess函数是一个低水平的接口。os/exec包提供了高水平的接口,应该尽量使用该包。
func (p *Process) Kill() error // 杀死进程
func (p *Process) Release() error // 释放进程p绑定的所有资源
func (p *Process) Signal(sig Signal) error // 向进程发送一个信号
func (p *Process) Wait() (*ProcessState, error) // 阻塞直到进程退出
func Getpid() int // 当前进程ID
func Getppid() int // 所在进程的父进程的进程ID


进程状态
type ProcessState
func (p *ProcessState) ExitCode() int // 进程exit code
func (p *ProcessState) Exited() bool // 是否程序已退出
func (p *ProcessState) Pid() int // 进程pid
func (p *ProcessState) String() string // 字符串描述
func (p *ProcessState) Success() bool // 是否程序成功退出
func (p *ProcessState) Sys() interface{} // 进程 status
func (p *ProcessState) SysUsage() interface{}
func (p *ProcessState) SystemTime() time.Duration
func (p *ProcessState) UserTime() time.Duration
type Signal



错误处理
type SyscallError // 系统调用错误
func (e *SyscallError) Error() string // 输出错误描述
func (e *SyscallError) Timeout() bool // 是否Timout错误
func (e *SyscallError) Unwrap() error // 返回error
func NewSyscallError(syscall string, err error) error // 创建错误信号
func IsExist(err error) bool // 错误是否由文件或目录存在导致的
func IsNotExist(err error) bool // 错误是否由文件或目录不存在导致的
func IsPermission(err error) bool // 错误是否由权限不足导致的
func IsTimeout(err error) bool // 错误是否由超时导致的



环境变量
func Clearenv() // 清空所有环境变量
func Environ() []string // 以k=v形式返回环境变量
func Expand(s string, mapping func(string) string) string // 根据字典替换${var}值
func ExpandEnv(s string) string //根据环境变量的值来替换字符串中的${var}或者$var,同 Expand(s, Getenv)
func Getenv(key string) string // 获取系统key的环境变量
func LookupEnv(key string) (string, bool) // 获取系统key的环境变量, 多返回 bool
func Setenv(key, value string) error // 设置环境变量
func Unsetenv(key string) error // 删除key环境变量

文件属性
func Chmod(name string, mode FileMode) error // 更改文件的权限(读写执行,分为三类:all-group-owner)
func Chown(name string, uid, gid int) error // 更改文件拥有者owner
func Lchown(name string, uid, gid int) error // 同Chown,修改该符号链接自身的用户id和组id
func Chtimes(name string, atime time.Time, mtime time.Time) error // 修改文件时间,atime表示访问时间,mtime表示更改时间


链接文件
func Link(oldname, newname string) error // 硬链接
func Readlink(name string) (string, error) // 读取 symbolic link 地址
func Symlink(oldname, newname string) error // 符号(软)链接

文件相关
func DirFS(dir string) fs.FS // 当前目录树的文件系统
func Mkdir(name string, perm FileMode) error // 创建文件夹
func MkdirAll(path string, perm FileMode) error // 递归创建文件夹
func MkdirTemp(dir, pattern string) (string, error) // 创建临时文件夹
func Chdir(dir string) error // 更改当前工作目录
func Remove(name string) error // 删除指定的文件或目录
func RemoveAll(path string) error // 递归删除文件
func ReadFile(name string) ([]byte, error) // 读文件
func WriteFile(name string, data []byte, perm FileMode) error // 写文件
func Truncate(name string, size int64) error // 修改文件大小
func Pipe() (r *File, w *File, err error) // 文件管道
func Rename(oldpath, newpath string) error // 重命名
func SameFile(fi1, fi2 FileInfo) bool // 是否描述相同文件


func TempDir() string // 用于保管临时文件的默认目录
func UserCacheDir() (string, error) // 用户缓存目录,darwin读取$HOME/Library/Caches,为空默认 /Library/Caches
func UserConfigDir() (string, error) // 用户配置目录,dawrwin读取$HOME/Library/Application Support,为空则默认 /Library/Application Support
func UserHomeDir() (string, error) // 用户家目录
func Getwd() (dir string, err error) //获取当前目录,类似linux中的pwd
func Hostname() (name string, err error) // 内核提供的主机名


type FileInfo // 文件状态:Name, Size, Mode, ModTime, IsDir, Sys
func Lstat(name string) (FileInfo, error) // 返回符号文件状态
func Stat(name string) (FileInfo, error) // 返回文件状态
type FileMode // 文件权限
type LinkError
func (e *LinkError) Error() string
func (e *LinkError) Unwrap() error
type PathError
type ProcAttr


type File // 文件对象
func Create(name string) (*File, error) // 创建文件,模式默认0666(任何人都可读写,不可执行)
// 相当于 OpenFile(name string, O_CREATE,0666)
func CreateTemp(dir, pattern string) (*File, error) // 创建临时文件夹
func NewFile(fd uintptr, name string) *File // 新文件
func Open(name string) (*File, error) // 只读打开文件
func OpenFile(name string, flag int, perm FileMode) (*File, error) // 指定文件权限和打开方式打开name文件或者create文件
func (f *File) Chdir() error // 更改工作目录
func (f *File) Chmod(mode FileMode) error // 更改文件权限
func (f *File) Chown(uid, gid int) error // 更改文件所有者
func (f *File) Close() error // 关闭文件
func (f *File) Fd() uintptr // 文件描述符,即句柄
func (f *File) Name() string // 文件名称,等同于 file.Stat().Name()
func (f *File) Read(b []byte) (n int, err error) // 读取文件
func (f *File) ReadAt(b []byte, off int64) (n int, err error) // 指定读取位置的Read
func (f *File) Write(b []byte) (n int, err error) // 写入文件
func (f *File) WriteAt(b []byte, off int64) (n int, err error) // 指定读取位置的Write
func (f *File) WriteString(s string) (n int, err error) // 写入字符串

func (f *File) ReadDir(n int) ([]DirEntry, error)
func (f *File) ReadFrom(r io.Reader) (n int64, err error)
func (f *File) Readdir(n int) ([]FileInfo, error) // 读取f指定目录的内容,最多包含n个FileInfo
func (f *File) Readdirnames(n int) (names []string, err error) // 返回f指定目录下文件名的切片
func (f *File) Seek(offset int64, whence int) (ret int64, err error) //设置下一次操作的偏移量offset, whence=1从当前偏移量,2=从文件结尾
func (f *File) SetDeadline(t time.Time) error
func (f *File) SetReadDeadline(t time.Time) error
func (f *File) SetWriteDeadline(t time.Time) error
func (f *File) Stat() (FileInfo, error) // 返回文件描述相关信息,包括大小,名字等.等价于os.Stat(filename string)
func (f *File) Sync() error // 同步操作,将当前存在内存中的文件内容写入硬盘
func (f *File) SyscallConn() (syscall.RawConn, error)
func (f *File) Truncate(size int64) error //类似 os.Truncate(name, size), 将文件进行截断

O_RDONLY // open the file read-only.
O_WRONLY // open the file write-only.
O_RDWR // open the file read-write.
O_APPEND int // append data to the file when writing.
O_CREATE int // create a new file if none exists.