os包主要实现操作系统相关的一些操作接口, 例如chown,chmod,getgid,getpid等.不详述,重点关注一些定义的结构体与特殊处理
错误处理相关函数
1 | go doc os |grep Is |
一个例子:
1 | package main |
os.Stat实际报错为如下结构:
1 | type PathError struct { |
可以看到,Op为stat(动作),Path为实际文件名,Err中保存的为实际错误
同理,定义了LinkError
1 | type LinkError struct { |
一些结构体
File
1 | func Open(name string) (*File, error) |
注意Open函数默认打开为O_RDONLY只读模式
1 | func Open(name string) (*File, error) { |
FileInfo
1 | func Lstat(name string) (FileInfo, error) |
FileMode定义为
1 | type FileMode uint32 |
一个例子:
1 | package main |
可以看到,一般perm写成8进制0755或者0400,二进制比特占用9个.
FileMode整体为32个bit位,最低9位表示权限,其余位置代表是否是普通文件或者是否是目录或者命名管道或者链接等等
Process
1 | type ProcAttr struct { |
一个例子
1 | argv := []string{"/etc/"} |