os包提供了操作系统函数的不依赖平台的接口。设计为Unix风格的,虽然错误处理是go风格的;失败的调用会返回错误值而非错误码。通常错误值里包含更多信息。例如,如果某个使用一个文件名的调用(如Open、Stat)失败了,打印错误时会包含该文件名,错误类型将为*PathError,其内部可以解包获得更多信息。

Constants

1
2
3
4
5
6
7
8
9
10
const (
O_RDONLY int = syscall.O_RDONLY // 只读模式打开文件
O_WRONLY int = syscall.O_WRONLY // 只写模式打开文件
O_RDWR int = syscall.O_RDWR // 读写模式打开文件
O_APPEND int = syscall.O_APPEND // 写操作时将数据附加到文件尾部
O_CREATE int = syscall.O_CREAT // 如果不存在将创建一个新文件
O_EXCL int = syscall.O_EXCL // 和O_CREATE配合使用,文件必须不存在
O_SYNC int = syscall.O_SYNC // 打开文件用于同步I/O
O_TRUNC int = syscall.O_TRUNC // 如果可能,打开时清空文件
)

用于包装底层系统的参数用于Open函数,不是所有的flag都能在特定系统里使用的。

1
2
3
4
5
const (
SEEK_SET int = 0 // 相对于文件起始位置seek
SEEK_CUR int = 1 // 相对于文件当前位置seek
SEEK_END int = 2 // 相对于文件结尾位置seek
)

指定Seek函数从何处开始搜索(即相对位置)。

1
2
3
4
const (
PathSeparator = '/' // 操作系统指定的路径分隔符
PathListSeparator = ':' // 操作系统指定的表分隔符
)

Variables

1
2
3
4
5
6
var (
ErrInvalid = errors.New("invalid argument")
ErrPermission = errors.New("permission denied")
ErrExist = errors.New("file already exists")
ErrNotExist = errors.New("file does not exist")
)

func Hostname

1
func Hostname() (name string, err error)

Hostname返回内核提供的主机名。

func Getpagesize

1
func Getpagesize() int

Getpagesize返回底层的系统内存页的尺寸。

func Environ

1
func Environ() []string

Environ返回表示环境变量的格式为”key=value”的字符串的切片拷贝。

func Getenv

1
func Getenv(key string) string

Getenv检索并返回名为key的环境变量的值。如果不存在该环境变量会返回空字符串。

func Setenv

1
func Setenv(key, value string) error

Setenv设置名为key的环境变量。如果出错会返回该错误。

func Clearenv

1
func Clearenv()

Clearenv删除所有环境变量。

func Exit

1
func Exit(code int)

Exit让当前程序以给出的状态码code退出。一般来说,状态码0表示成功,非0表示出错。程序会立刻终止,defer的函数不会被执行。

func Expand

1
func Expand(s string, mapping func(string) string) string

Expand函数替换s中的${var}或$var为mapping(var)。例如,os.ExpandEnv(s)等价于os.Expand(s, os.Getenv)。

func ExpandEnv

1
func ExpandEnv(s string) string

ExpandEnv函数替换s中的${var}或$var为名为var 的环境变量的值。引用未定义环境变量会被替换为空字符串。

func Getuid

1
func Getuid() int

Getuid返回调用者的用户ID。

func Geteuid

1
func Geteuid() int

Geteuid返回调用者的有效用户ID。

func Getgid

1
func Getgid() int

Getgid返回调用者的组ID。

func Getegid

1
func Getegid() int

Getegid返回调用者的有效组ID。

func Getgroups

1
func Getgroups() ([]int, error)

Getgroups返回调用者所属的所有用户组的组ID。

func Getpid

1
func Getpid() int

Getpid返回调用者所在进程的进程ID。

func Getppid

1
func Getppid() int

Getppid返回调用者所在进程的父进程的进程ID。

type Signal

1
2
3
4
type Signal interface {
String() string
Signal() // 用来区分其他实现了Stringer接口的类型
}

Signal代表一个操作系统信号。一般其底层实现是依赖于操作系统的:在Unix中,它是syscall.Signal类型。

1
2
3
4
var (
Interrupt Signal = syscall.SIGINT
Kill Signal = syscall.SIGKILL
)

仅有的肯定会被所有操作系统提供的信号,Interrupt(中断信号)和Kill(强制退出信号)。

func Hostname

1
func Hostname() (name string, err error)

Hostname返回内核提供的主机名。

func Getpagesize

1
func Getpagesize() int

Getpagesize返回底层的系统内存页的尺寸。

func Environ

1
func Environ() []string

Environ返回表示环境变量的格式为”key=value”的字符串的切片拷贝。

func Getenv

1
func Getenv(key string) string

Getenv检索并返回名为key的环境变量的值。如果不存在该环境变量会返回空字符串。

func Setenv

1
func Setenv(key, value string) error

Setenv设置名为key的环境变量。如果出错会返回该错误。

func Clearenv

1
func Clearenv()

Clearenv删除所有环境变量。

func Exit

1
func Exit(code int)

Exit让当前程序以给出的状态码code退出。一般来说,状态码0表示成功,非0表示出错。程序会立刻终止,defer的函数不会被执行。

func Expand

1
func Expand(s string, mapping func(string) string) string

Expand函数替换s中的${var}或$var为mapping(var)。例如,os.ExpandEnv(s)等价于os.Expand(s, os.Getenv)。

func ExpandEnv

1
func ExpandEnv(s string) string

ExpandEnv函数替换s中的${var}或$var为名为var 的环境变量的值。引用未定义环境变量会被替换为空字符串。

func Getuid

1
func Getuid() int

Getuid返回调用者的用户ID。

func Geteuid

1
func Geteuid() int

Geteuid返回调用者的有效用户ID。

func Getgid

1
func Getgid() int

Getgid返回调用者的组ID。

func Getegid

1
func Getegid() int

Getegid返回调用者的有效组ID。

func Getgroups

1
func Getgroups() ([]int, error)

Getgroups返回调用者所属的所有用户组的组ID。

func Getpid

1
func Getpid() int

Getpid返回调用者所在进程的进程ID。

func Getppid

1
func Getppid() int

Getppid返回调用者所在进程的父进程的进程ID。

type Signal

1
2
3
4
type Signal interface {
String() string
Signal() // 用来区分其他实现了Stringer接口的类型
}

Signal代表一个操作系统信号。一般其底层实现是依赖于操作系统的:在Unix中,它是syscall.Signal类型。

1
2
3
4
var (
Interrupt Signal = syscall.SIGINT
Kill Signal = syscall.SIGKILL
)

仅有的肯定会被所有操作系统提供的信号,Interrupt(中断信号)和Kill(强制退出信号)。