Package os

Overview ▾

Package os provides a platform-independent interface to operating system functionality. The design is Unix-like, although the error handling is Go-like; failing calls return values of type error rather than error numbers. Often, more information is available within the error. For example, if a call that takes a file name fails, such as Open or Stat, the error will include the failing file name when printed and will be of type *PathError, which may be unpacked for more information.

os接口旨在在所有操作系统上保持统一. 通常不可用的功能出现在特定于系统的软件包syscall中.

这是一个简单的示例,打开一个文件并读取其中的一些内容.

file, err := os.Open("file.go") // For read access.
if err != nil {
	log.Fatal(err)
}

如果打开失败,错误字符串将不言自明,例如

open file.go: no such file or directory

然后可以将文件的数据读取为一个字节片. 读取和写入从参数切片的长度中获取字节数.

data := make([]byte, 100)
count, err := file.Read(data)
if err != nil {
	log.Fatal(err)
}
fmt.Printf("read %d bytes: %q\n", count, data[:count])

注意:对文件的最大并行操作数可能受操作系统或系统的限制. 该数目应该很高,但是超过该数目可能会降低性能或引起其他问题.

Index ▾

Constants
Variables
func Chdir(dir string) error
func Chmod(name string, mode FileMode) error
func Chown(name string, uid, gid int) error
func Chtimes(name string, atime time.Time, mtime time.Time) error
func Clearenv()
func Environ() []string
func Executable() (string, error)
func Exit(code int)
func Expand(s string, mapping func(string) string) string
func ExpandEnv(s string) string
func Getegid() int
func Getenv(key string) string
func Geteuid() int
func Getgid() int
func Getgroups() ([]int, error)
func Getpagesize() int
func Getpid() int
func Getppid() int
func Getuid() int
func Getwd() (dir string, err error)
func Hostname() (name string, err error)
func IsExist(err error) bool
func IsNotExist(err error) bool
func IsPathSeparator(c uint8) bool
func IsPermission(err error) bool
func IsTimeout(err error) bool
func Lchown(name string, uid, gid int) error
func Link(oldname, newname string) error
func LookupEnv(key string) (string, bool)
func Mkdir(name string, perm FileMode) error
func MkdirAll(path string, perm FileMode) error
func NewSyscallError(syscall string, err error) error
func Pipe() (r *File, w *File, err error)
func Readlink(name string) (string, error)
func Remove(name string) error
func RemoveAll(path string) error
func Rename(oldpath, newpath string) error
func SameFile(fi1, fi2 FileInfo) bool
func Setenv(key, value string) error
func Symlink(oldname, newname string) error
func TempDir() string
func Truncate(name string, size int64) error
func Unsetenv(key string) error
func UserCacheDir() (string, error)
func UserConfigDir() (string, error)
func UserHomeDir() (string, error)
type File
    func Create(name 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)
    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
    func (f *File) Read(b []byte) (n int, err error)
    func (f *File) ReadAt(b []byte, off int64) (n int, err error)
    func (f *File) Readdir(n int) ([]FileInfo, error)
    func (f *File) Readdirnames(n int) (names []string, err error)
    func (f *File) Seek(offset int64, whence int) (ret int64, err error)
    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)
    func (f *File) Sync() error
    func (f *File) SyscallConn() (syscall.RawConn, error)
    func (f *File) Truncate(size int64) error
    func (f *File) Write(b []byte) (n int, err error)
    func (f *File) WriteAt(b []byte, off int64) (n int, err error)
    func (f *File) WriteString(s string) (n int, err error)
type FileInfo
    func Lstat(name string) (FileInfo, error)
    func Stat(name string) (FileInfo, error)
type FileMode
    func (m FileMode) IsDir() bool
    func (m FileMode) IsRegular() bool
    func (m FileMode) Perm() FileMode
    func (m FileMode) String() string
type LinkError
    func (e *LinkError) Error() string
    func (e *LinkError) Unwrap() error
type PathError
    func (e *PathError) Error() string
    func (e *PathError) Timeout() bool
    func (e *PathError) Unwrap() error
type ProcAttr
type Process
    func FindProcess(pid int) (*Process, error)
    func StartProcess(name string, argv []string, attr *ProcAttr) (*Process, error)
    func (p *Process) Kill() error
    func (p *Process) Release() error
    func (p *Process) Signal(sig Signal) error
    func (p *Process) Wait() (*ProcessState, error)
type ProcessState
    func (p *ProcessState) ExitCode() int
    func (p *ProcessState) Exited() bool
    func (p *ProcessState) Pid() int
    func (p *ProcessState) String() string
    func (p *ProcessState) Success() bool
    func (p *ProcessState) Sys() interface{}
    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
    func (e *SyscallError) Unwrap() error

Package files

dir.go dir_unix.go env.go env_default.go error.go error_errno.go error_posix.go exec.go exec_posix.go exec_unix.go executable.go executable_procfs.go file.go file_posix.go file_unix.go getwd.go path.go path_unix.go pipe_linux.go proc.go rawconn.go removeall_at.go stat.go stat_linux.go stat_unix.go sticky_notbsd.go str.go sys.go sys_linux.go sys_unix.go types.go types_unix.go wait_waitid.go

Constants

OpenFile的标志包装了基础系统的标志. 并非所有标志都可以在给定的系统上实现.

const (
    // Exactly one of O_RDONLY, O_WRONLY, or O_RDWR must be specified.
    O_RDONLY int = syscall.O_RDONLY // open the file read-only.
    O_WRONLY int = syscall.O_WRONLY // open the file write-only.
    O_RDWR   int = syscall.O_RDWR   // open the file read-write.
    // The remaining values may be or'ed in to control behavior.
    O_APPEND int = syscall.O_APPEND // append data to the file when writing.
    O_CREATE int = syscall.O_CREAT  // create a new file if none exists.
    O_EXCL   int = syscall.O_EXCL   // used with O_CREATE, file must not exist.
    O_SYNC   int = syscall.O_SYNC   // open for synchronous I/O.
    O_TRUNC  int = syscall.O_TRUNC  // truncate regular writable file when opened.
)

寻求价值来源.

不推荐使用:使用io.SeekStart,io.SeekCurrent和io.SeekEnd.

const (
    SEEK_SET int = 0 // seek relative to the origin of the file
    SEEK_CUR int = 1 // seek relative to the current offset
    SEEK_END int = 2 // seek relative to the end
)
const (
    PathSeparator     = '/' // OS-specific path separator
    PathListSeparator = ':' // OS-specific path list separator
)

DevNull是操作系统的"空设备"的名称.在类Unix系统上,它是" / dev / null". 在Windows上为" NUL".

const DevNull = "/dev/null"

Variables

一些常见系统调用错误的便携式类似物.

从此程序包返回的错误可能会针对带有error.Is的这些错误进行测试.

var (
    // ErrInvalid indicates an invalid argument.
    // Methods on File will return this error when the receiver is nil.
    ErrInvalid = errInvalid() // "invalid argument"

    ErrPermission = errPermission() // "permission denied"
    ErrExist      = errExist()      // "file already exists"
    ErrNotExist   = errNotExist()   // "file does not exist"
    ErrClosed     = errClosed()     // "file already closed"
    ErrNoDeadline = errNoDeadline() // "file type does not support deadline"
)

Stdin,Stdout和Stderr是打开的文件,指向标准输入,标准输出和标准错误文件描述符.

请注意,Go运行时会写入标准错误,以防发生崩溃和崩溃; 关闭Stderr可能会使这些消息传到其他地方,甚至可能到达以后打开的文件中.

var (
    Stdin  = NewFile(uintptr(syscall.Stdin), "/dev/stdin")
    Stdout = NewFile(uintptr(syscall.Stdout), "/dev/stdout")
    Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr")
)

Args保留以程序名称开头的命令行参数.

var Args []string

func Chdir

func Chdir(dir string) error

Chdir将当前工作目录更改为命名目录. 如果有错误,它将是* PathError类型.

func Chmod

func Chmod(name string, mode FileMode) error

Chmod将命名文件的模式更改为mode. 如果文件是符号链接,则它将更改链接目标的模式. 如果有错误,它将是* PathError类型.

根据操作系统,使用模式位的不同子集.

在Unix上,使用模式的权限位ModeSetuid,ModeSetgid和ModeSticky.

在Windows上,仅使用模式的0200位(所有者可写). 它控制是设置还是清除文件的只读属性. 其他位当前未使用. 为了与Go 1.12和更早版本兼容,请使用非零模式. 将模式0400用于只读文件,将模式0600用于可读和可写文件.

在计划9上,使用模式的权限位ModeAppend,ModeExclusive和ModeTemporary.

Example

func Chown

func Chown(name string, uid, gid int) error

Chown更改命名文件的数字uid和gid. 如果文件是符号链接,则它将更改链接目标的uid和gid. uid或gid -1表示不更改该值. 如果有错误,它将是* PathError类型.

在Windows或Plan 9上,Chown始终返回syscall.EWINDOWS或EPLAN9错误,并包装在* PathError中.

func Chtimes

func Chtimes(name string, atime time.Time, mtime time.Time) error

Chtimes更改命名文件的访问和修改时间,类似于Unix的utime()或utimes()函数.

基础文件系统可能会将值截断或舍入为不太精确的时间单位. 如果有错误,它将是* PathError类型.

Example

func Clearenv

func Clearenv()

Clearenv删除所有环境变量.

func Environ

func Environ() []string

Environ返回表示环境的字符串的副本,形式为"键=值".

func Executable 1.8

func Executable() (string, error)

可执行文件返回启动当前进程的可执行文件的路径名. 无法保证该路径仍指向正确的可执行文件. 如果使用符号链接来启动该过程,则取决于操作系统,结果可能是符号链接或它指向的路径. 如果需要稳定的结果,则path / filepath.EvalSymlinks可能会有所帮助.

除非发生错误,否则可执行文件将返回绝对路径.

主要用例是查找相对于可执行文件而言的资源.

nacl不支持可执行文件.

func Exit

func Exit(code int)

退出使当前程序以给定的状态码退出. 按照惯例,代码零表示成功,代码零表示错误. 该程序立即终止; 延迟功能无法运行.

为了便于携带,状态码应在[0,125]范围内.

func Expand

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

Expand根据映射函数替换字符串中的$ {var}或$ var. 例如,os.ExpandEnv(s)等效于os.Expand(s,os.Getenv).

Example

Good morning, Gopher!

func ExpandEnv

func ExpandEnv(s string) string

ExpandEnv根据当前环境变量的值替换字符串中的$ {var}或$ var. 未定义变量的引用将替换为空字符串.

Example

gopher lives in /usr/gopher.

func Getegid

func Getegid() int

Getegid返回呼叫者的数字有效组ID.

在Windows上,它返回-1.

func Getenv

func Getenv(key string) string

Getenv检索由键命名的环境变量的值. 它返回值,如果不存在该变量,则该值为空. 要区分空值和未设置值,请使用LookupEnv.

Example

gopher lives in /usr/gopher.

func Geteuid

func Geteuid() int

Geteuid返回调用方的数字有效用户ID.

在Windows上,它返回-1.

func Getgid

func Getgid() int

Getgid返回调用者的数字组ID.

在Windows上,它返回-1.

func Getgroups

func Getgroups() ([]int, error)

Getgroups返回调用者所属的组的数字ID的列表.

在Windows上,它返回syscall.EWINDOWS. 请参阅os / user软件包以获取可能的替代方法.

func Getpagesize

func Getpagesize() int

Getpagesize返回基础系统的内存页面大小.

func Getpid

func Getpid() int

Getpid返回调用者的进程ID.

func Getppid

func Getppid() int

Getppid返回调用者的父代的进程ID.

func Getuid

func Getuid() int

Getuid returns the numeric user id of the caller.

在Windows上,它返回-1.

func Getwd

func Getwd() (dir string, err error)

Getwd返回与当前目录对应的根目录路径名. 如果可以通过多个路径访问当前目录(由于符号链接),则Getwd可能会返回其中任何一个.

func Hostname

func Hostname() (name string, err error)

主机名返回内核报告的主机名.

func IsExist

func IsExist(err error) bool

IsExist返回一个布尔值,指示是否已知该错误以报告文件或目录已存在. ErrExist以及一些系统调用错误都可以满足要求.

func IsNotExist

func IsNotExist(err error) bool

IsNotExist返回一个布尔值,该布尔值指示是否已知该错误以报告文件或目录不存在. ErrNotExist以及一些系统调用错误都可以满足要求.

Example

file does not exist

func IsPathSeparator

func IsPathSeparator(c uint8) bool

IsPathSeparator报告c是否为目录分隔符.

func IsPermission

func IsPermission(err error) bool

IsPermission返回一个布尔值,该布尔值指示是否已知错误,以报告权限被拒绝. ErrPermission以及一些系统调用错误都可以满足要求.

func IsTimeout 1.10

func IsTimeout(err error) bool

IsTimeout返回一个布尔值,指示是否已知该错误以报告发生了超时.

func Lchown

func Lchown(name string, uid, gid int) error

Lchown更改命名文件的数字uid和gid. 如果文件是符号链接,它将更改链接本身的uid和gid. 如果有错误,它将是* PathError类型.

在Windows上,它始终返回syscall.EWINDOWS错误,并包装在* PathError中.

func Link(oldname, newname string) error

链接创建新名称作为到旧名称文件的硬链接. 如果有错误,它将是* LinkError类型.

func LookupEnv 1.5

func LookupEnv(key string) (string, bool)

LookupEnv检索由键命名的环境变量的值. 如果环境中存在变量,则返回值(可能为空),并且布尔值为true. 否则,返回值将为空,布尔值将为false.

Example

SOME_KEY=value
EMPTY_KEY=
MISSING_KEY not set

func Mkdir

func Mkdir(name string, perm FileMode) error

Mkdir使用指定的名称和权限位(在umask之前)创建一个新目录. 如果有错误,它将是* PathError类型.

func MkdirAll

func MkdirAll(path string, perm FileMode) error

MkdirAll创建一个名为path的目录以及所有必要的父目录,并返回nil,否则返回错误. 权限位perm(在umask之前)用于MkdirAll创建的所有目录. 如果path已经是目录,则MkdirAll不执行任何操作并返回nil.

func NewSyscallError

func NewSyscallError(syscall string, err error) error

NewSyscallError作为错误返回具有给定系统调用名称和错误详细信息的新SyscallError. 为方便起见,如果err为nil,则NewSyscallError返回nil.

func Pipe

func Pipe() (r *File, w *File, err error)

管道返回一对连接的文件; 从r读取,返回写入w的字节. 它返回文件和错误(如果有).

func Readlink(name string) (string, error)

Readlink returns the destination of the named symbolic link. If there is an error, it will be of type *PathError.

func Remove

func Remove(name string) error

删除将删除命名文件或(空)目录. 如果有错误,它将是* PathError类型.

func RemoveAll

func RemoveAll(path string) error

RemoveAll删除路径及其包含的所有子项. 它删除了所有可能的内容,但返回遇到的第一个错误. 如果路径不存在,则RemoveAll返回nil(无错误). 如果有错误,它将是* PathError类型.

func Rename

func Rename(oldpath, newpath string) error

重命名将旧路径重命名(移动)为新路径. 如果newpath已经存在并且不是目录,则使用重命名替换它. 当oldpath和newpath位于不同目录中时,可能会应用特定于操作系统的限制. 如果有错误,它将是* LinkError类型.

func SameFile

func SameFile(fi1, fi2 FileInfo) bool

SameFile报告fi1和fi2是否描述相同的文件. 例如,在Unix上,这意味着两个基础结构的device和inode字段是相同的. 在其他系统上,该决定可能基于路径名. SameFile仅适用于此程序包的Stat返回的结果. 在其他情况下,它返回false.

func Setenv

func Setenv(key, value string) error

Setenv设置由键命名的环境变量的值. 如果有错误,它将返回一个错误.

func Symlink(oldname, newname string) error

Symlink创建newname作为到oldname的符号链接. 如果有错误,它将是* LinkError类型.

func TempDir

func TempDir() string

TempDir返回用于临时文件的默认目录.

在Unix系统上,如果非空,则返回$ TMPDIR,否则返回/ tmp. 在Windows上,它使用GetTempPath,从%TMP%,%TEMP%,%USERPROFILE%或Windows目录返回第一个非空值. 在计划9中,它返回/ tmp.

该目录既不能保证存在也不具有访问权限.

func Truncate

func Truncate(name string, size int64) error

截断将更改命名文件的大小. 如果文件是符号链接,则它将更改链接目标的大小. 如果有错误,它将是* PathError类型.

func Unsetenv 1.4

func Unsetenv(key string) error

Unsetenv取消设置单个环境变量.

Example

func UserCacheDir 1.11

func UserCacheDir() (string, error)

UserCacheDir返回默认根目录,以用于特定于用户的缓存数据. 用户应在此目录中创建自己的特定于应用程序的子目录,并使用该子目录.

在Unix系统上,如果非空,则返回https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html指定的$ XDG_CACHE_HOME,否则返回$ HOME / .cache. 在Darwin上,它返回$ HOME / Library / Caches. 在Windows上,它返回%LocalAppData%. 在计划9中,它返回$ home / lib / cache.

如果无法确定位置(例如,未定义$ HOME),则它将返回错误.

func UserConfigDir 1.13

func UserConfigDir() (string, error)

UserConfigDir返回默认的根目录,以用于特定于用户的配置数据. 用户应在此目录中创建自己的特定于应用程序的子目录,并使用该子目录.

在Unix系统上,如果非空,则返回https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html指定的$ XDG_CONFIG_HOME,否则返回$ HOME / .config. 在Darwin上,它返回$ HOME / Library / Application Support. 在Windows上,它返回%AppData%. 在计划9中,它返回$ home / lib.

如果无法确定位置(例如,未定义$ HOME),则它将返回错误.

func UserHomeDir 1.12

func UserHomeDir() (string, error)

UserHomeDir返回当前用户的主目录.

在包括macOS的Unix上,它返回$ HOME环境变量. 在Windows上,它返回%USERPROFILE%. 在计划9中,它返回$ home环境变量.

type File

文件表示打开的文件描述符.

type File struct {
    // contains filtered or unexported fields
}

func Create

func Create(name string) (*File, error)

创建将创建或截断命名文件. 如果该文件已经存在,它将被截断. 如果该文件不存在,则使用模式0666(在umask之前)创建该文件. 如果成功,可以将返回的File上的方法用于I / O. 关联的文件描述符的模式为O_RDWR. 如果有错误,它将是* PathError类型.

func NewFile

func NewFile(fd uintptr, name string) *File

NewFile返回具有给定文件描述符和名称的新File. 如果fd不是有效的文件描述符,则返回的值为nil. 在Unix系统上,如果文件描述符处于非阻塞模式,则NewFile将尝试返回可轮询的文件(SetDeadline方法可用于该文件).

func Open

func Open(name string) (*File, error)

打开将打开命名文件以供读取. 如果成功,则可以使用返回文件上的方法进行读取; 关联的文件描述符的模式为O_RDONLY. 如果有错误,它将是* PathError类型.

func OpenFile

func OpenFile(name string, flag int, perm FileMode) (*File, error)

OpenFile是广义的open调用; 大多数用户将改为使用"打开"或"创建". 它打开带有指定标志(O_RDONLY等)的命名文件. 如果文件不存在,并且传递了O_CREATE标志,则使用模式perm(在umask之前)创建文件. 如果成功,则可以将返回的File上的方法用于I / O. 如果有错误,它将是* PathError类型.

Example

示例(附加)

func (*File) Chdir

func (f *File) Chdir() error

Chdir将当前工作目录更改为该文件,该目录必须是目录. 如果有错误,它将是* PathError类型.

func (*File) Chmod

func (f *File) Chmod(mode FileMode) error

Chmod将文件的模式更改为mode. 如果有错误,它将是* PathError类型.

func (*File) Chown

func (f *File) Chown(uid, gid int) error

Chown更改命名文件的数字uid和gid. 如果有错误,它将是* PathError类型.

在Windows上,它始终返回syscall.EWINDOWS错误,并包装在* PathError中.

func (*File) Close

func (f *File) Close() error

关闭将关闭文件,使其无法用于I / O. 在支持SetDeadline的文件上,所有挂起的I / O操作都将被取消并立即返回错误. 如果已经调用Close,则将返回错误.

func (*File) Fd

func (f *File) Fd() uintptr

Fd返回引用打开文件的整数Unix文件描述符. 仅在调用f.Close或f被垃圾回收之前,文件描述符才有效. 在Unix系统上,这将导致SetDeadline方法停止工作.

func (*File) Name

func (f *File) Name() string

名称返回显示给打开的文件的名称.

func (*File) Read

func (f *File) Read(b []byte) (n int, err error)

读取从文件中读取多达len(b)个字节. 它返回读取的字节数和遇到的任何错误. 在文件末尾,Read返回io.EOF,0.

func (*File) ReadAt

func (f *File) ReadAt(b []byte, off int64) (n int, err error)

ReadAt从字节偏移量开始从文件读取len(b)个字节. 它返回读取的字节数和错误(如果有). 当n <len(b)时,ReadAt总是返回非nil错误. 在文件末尾,该错误是io.EOF.

func (*File) Readdir

func (f *File) Readdir(n int) ([]FileInfo, error)

Readdir读取与文件关联的目录的内容,并按目录顺序返回最多n个FileInfo值的切片,如Lstat将返回的那样. 对同一文件的后续调用将产生进一步的FileInfo.

如果n> 0,则Readdir最多返回n个FileInfo结构. 在这种情况下,如果Readdir返回一个空片,它将返回一个非null错误,说明原因. 在目录末尾,错误是io.EOF.

如果n <= 0,则Readdir在单个片中返回目录中的所有FileInfo. 在这种情况下,如果Readdir成功(一直读取到目录的末尾),它将返回切片和nil错误. 如果它在目录末尾之前遇到错误,则Readdir返回读取的FileInfo直到该点为止,并且返回非nil错误.

func (*File) Readdirnames

func (f *File) Readdirnames(n int) (names []string, err error)

Readdirnames读取与文件关联的目录的内容,并按目录顺序返回目录中最多n个文件名的切片. 在同一文件上的后续调用将产生其他名称.

如果n> 0,则Readdirnames最多返回n个名称. 在这种情况下,如果Readdirnames返回一个空片,它将返回一个非null错误,说明原因. 在目录末尾,错误是io.EOF.

如果n <= 0,则Readdirnames在单个片中返回目录中的所有名称. 在这种情况下,如果Readdirnames成功(一直读取到目录的末尾),它将返回切片和nil错误. 如果在目录末尾遇到错误,Readdirnames将返回读取的名称,直到该点为止,并且返回非nil错误.

func (*File) Seek

func (f *File) Seek(offset int64, whence int) (ret int64, err error)

Seek将下一次在文件上读取或写入的偏移量设置为偏移量,根据whence进行解释:0表示相对于文件原点,1表示相对于当前偏移量,2表示相对于末尾. 它返回新的偏移量和一个错误(如果有). 未指定使用O_APPEND打开的文件的Seek行为.

func (*File) SetDeadline 1.10

func (f *File) SetDeadline(t time.Time) error

SetDeadline设置文件的读取和写入截止时间. 这等效于调用SetReadDeadline和SetWriteDeadline.

仅某些类型的文件支持设置截止日期. 对不支持截止日期的文件的调用SetDeadline将返回ErrNoDeadline. 在大多数系统上,普通文件不支持期限,但管道支持期限.

截止期限是绝对时间,在此绝对时间之后,I / O操作会因错误而不是阻塞而失败. 截止日期适用于所有将来和未决的I / O,而不仅仅是紧随其后的读取或写入调用. 超过期限后,可以通过设置将来的期限来刷新连接.

超时失败后返回的错误将实现Timeout方法,并且调用Timeout方法将返回true. PathError和SyscallError类型实现Timeout方法. 通常,调用IsTimeout来测试错误是否表示超时.

空闲超时可以通过在成功进行Read或Write调用后重复延长截止期限来实现.

t的值为零表示I / O操作不会超时.

func (*File) SetReadDeadline 1.10

func (f *File) SetReadDeadline(t time.Time) error

SetReadDeadline设置将来的Read呼叫和任何当前阻止的Read呼叫的截止日期. t的值为零表示读取不会超时. 并非所有文件都支持设置期限. 请参阅SetDeadline.

func (*File) SetWriteDeadline 1.10

func (f *File) SetWriteDeadline(t time.Time) error

SetWriteDeadline设置任何将来的Write调用和任何当前阻止的Write调用的截止日期. 即使Write超时,它也可能返回n> 0,表示某些数据已成功写入. t的值为零表示写入不会超时. 并非所有文件都支持设置期限. 请参阅SetDeadline.

func (*File) Stat

func (f *File) Stat() (FileInfo, error)

Stat返回描述文件的FileInfo结构. 如果有错误,它将是* PathError类型.

func (*File) Sync

func (f *File) Sync() error

同步会将文件的当前内容提交到稳定的存储中. 通常,这意味着将文件系统的最新写入数据的内存中副本刷新到磁盘.

func (*File) SyscallConn 1.12

func (f *File) SyscallConn() (syscall.RawConn, error)

SyscallConn返回原始文件. 这实现了syscall.Conn接口.

func (*File) Truncate

func (f *File) Truncate(size int64) error

截断可更改文件的大小. 它不会更改I / O偏移量. 如果有错误,它将是* PathError类型.

func (*File) Write

func (f *File) Write(b []byte) (n int, err error)

写入将len(b)个字节写入文件. 它返回写入的字节数和错误(如果有). 当n!= len(b)时,写入将返回非nil错误.

func (*File) WriteAt

func (f *File) WriteAt(b []byte, off int64) (n int, err error)

WriteAt从字节偏移量开始将len(b)字节写入文件. 它返回写入的字节数和错误(如果有). 当n!= len(b)时,WriteAt返回一个非nil错误.

如果使用O_APPEND标志打开文件,则WriteAt返回错误.

func (*File) WriteString

func (f *File) WriteString(s string) (n int, err error)

WriteString类似于Write,但是写入字符串s的内容,而不是字节的片段.

type FileInfo

FileInfo描述文件,并由Stat和Lstat返回.

type FileInfo interface {
    Name() string       // base name of the file
    Size() int64        // length in bytes for regular files; system-dependent for others
    Mode() FileMode     // file mode bits
    ModTime() time.Time // modification time
    IsDir() bool        // abbreviation for Mode().IsDir()
    Sys() interface{}   // underlying data source (can return nil)
}

func Lstat

func Lstat(name string) (FileInfo, error)

Lstat返回描述命名文件的FileInfo. 如果文件是符号链接,则返回的FileInfo将描述符号链接. Lstat不会尝试遵循该链接. 如果有错误,它将是* PathError类型.

func Stat

func Stat(name string) (FileInfo, error)

Stat返回描述命名文件的FileInfo. 如果有错误,它将是* PathError类型.

type FileMode

FileMode代表文件的模式和权限位. 这些位在所有系统上都具有相同的定义,因此有关文件的信息可以从一个系统移动到另一个系统. 并非所有位都适用于所有系统. 唯一需要的位是目录的ModeDir.

type FileMode uint32

定义的文件模式位是FileMode的最高有效位. 这9个最低有效位是标准的Unix rwxrwxrwx权限. 这些位的值应被视为公共API的一部分,可以在有线协议或磁盘表示中使用:尽管可以添加新的位,但不得更改它们.

const (
    // The single letters are the abbreviations
    // used by the String method's formatting.
    ModeDir        FileMode = 1 << (32 - 1 - iota) // d: is a directory
    ModeAppend                                     // a: append-only
    ModeExclusive                                  // l: exclusive use
    ModeTemporary                                  // T: temporary file; Plan 9 only
    ModeSymlink                                    // L: symbolic link
    ModeDevice                                     // D: device file
    ModeNamedPipe                                  // p: named pipe (FIFO)
    ModeSocket                                     // S: Unix domain socket
    ModeSetuid                                     // u: setuid
    ModeSetgid                                     // g: setgid
    ModeCharDevice                                 // c: Unix character device, when ModeDevice is set
    ModeSticky                                     // t: sticky
    ModeIrregular                                  // ?: non-regular file; nothing else is known about this file

    // Mask for the type bits. For regular files, none will be set.
    ModeType = ModeDir | ModeSymlink | ModeNamedPipe | ModeSocket | ModeDevice | ModeCharDevice | ModeIrregular

    ModePerm FileMode = 0777 // Unix permission bits
)

Example

func (FileMode) IsDir

func (m FileMode) IsDir() bool

IsDir报告m是否描述目录. 也就是说,它测试是否在m中设置了ModeDir位.

func (FileMode) IsRegular 1.1

func (m FileMode) IsRegular() bool

IsRegular报告m是否描述常规文件. 即,它测试没有设置任何模式类型位.

func (FileMode) Perm

func (m FileMode) Perm() FileMode

Perm返回m中的Unix权限位.

func (FileMode) String

func (m FileMode) String() string

type LinkError

LinkError记录链接或符号链接或重命名系统调用期间的错误以及导致该错误的路径.

type LinkError struct {
    Op  string
    Old string
    New string
    Err error
}

func (*LinkError) Error

func (e *LinkError) Error() string

func (*LinkError) Unwrap 1.13

func (e *LinkError) Unwrap() error

type PathError

PathError记录错误以及导致该错误的操作和文件路径.

type PathError struct {
    Op   string
    Path string
    Err  error
}

func (*PathError) Error

func (e *PathError) Error() string

func (*PathError) Timeout 1.10

func (e *PathError) Timeout() bool

超时报告此错误是否表示超时.

func (*PathError) Unwrap 1.13

func (e *PathError) Unwrap() error

type ProcAttr

ProcAttr保留将应用于StartProcess启动的新流程的属性.

type ProcAttr struct {
    // If Dir is non-empty, the child changes into the directory before
    // creating the process.
    Dir string
    // If Env is non-nil, it gives the environment variables for the
    // new process in the form returned by Environ.
    // If it is nil, the result of Environ will be used.
    Env []string
    // Files specifies the open files inherited by the new process. The
    // first three entries correspond to standard input, standard output, and
    // standard error. An implementation may support additional entries,
    // depending on the underlying operating system. A nil entry corresponds
    // to that file being closed when the process starts.
    Files []*File

    // Operating system-specific process creation attributes.
    // Note that setting this field means that your program
    // may not execute properly or even compile on some
    // operating systems.
    Sys *syscall.SysProcAttr
}

type Process

进程存储有关由StartProcess创建的进程的信息.

type Process struct {
    Pid int
    // contains filtered or unexported fields
}

func FindProcess

func FindProcess(pid int) (*Process, error)

FindProcess通过其pid查找正在运行的进程.

它返回的进程可用于获取有关基础操作系统进程的信息.

在Unix系统上,无论进程是否存在,FindProcess总是成功并为给定的pid返回一个Process.

func StartProcess

func StartProcess(name string, argv []string, attr *ProcAttr) (*Process, error)

StartProcess使用名称,argv和attr指定的程序,参数和属性启动新进程. argv slice在新进程中将变为os.Args,因此它通常以程序名称开头.

如果调用goroutine已使用runtime.LockOSThread锁定了操作系统线程并修改了任何可继承的OS级线程状态(例如Linux或Plan 9名称空间),则新进程将继承调用者的线程状态.

StartProcess是一个低级接口. os / exec软件包提供了更高级别的接口.

如果有错误,它将是* PathError类型.

func (*Process) Kill

func (p *Process) Kill() error

杀死会导致进程立即退出. Kill不会等到进程实际退出. 这只会杀死进程本身,不会杀死它可能已经启动的任何其他进程.

func (*Process) Release

func (p *Process) Release() error

发布会释放与进程p相关的所有资源,从而使其将来无法使用. 仅当没有等待时才需要调用释放.

func (*Process) Signal

func (p *Process) Signal(sig Signal) error

信号向过程发送信号. Windows上未实现发送中断.

func (*Process) Wait

func (p *Process) Wait() (*ProcessState, error)

等待等待流程退出,然后返回描述其状态和错误(如果有)的ProcessState. 等待释放与流程关联的所有资源. 在大多数操作系统上,该进程必须是当前进程的子进程,否则将返回错误.

type ProcessState

ProcessState存储有关流程的信息,如Wait所报告.

type ProcessState struct {
    // contains filtered or unexported fields
}

func (*ProcessState) ExitCode 1.12

func (p *ProcessState) ExitCode() int

ExitCode返回已退出进程的退出代码;如果该进程尚未退出或被信号终止,则返回-1.

func (*ProcessState) Exited

func (p *ProcessState) Exited() bool

Exited reports whether the program has exited.

func (*ProcessState) Pid

func (p *ProcessState) Pid() int

Pid返回退出进程的进程ID.

func (*ProcessState) String

func (p *ProcessState) String() string

func (*ProcessState) Success

func (p *ProcessState) Success() bool

成功报告程序是否成功退出,例如在Unix上退出状态为0.

func (*ProcessState) Sys

func (p *ProcessState) Sys() interface{}

Sys返回有关该进程的系统相关退出信息. 将其转换为适当的基础类型,例如Unix上的syscall.WaitStatus,以访问其内容.

func (*ProcessState) SysUsage

func (p *ProcessState) SysUsage() interface{}

SysUsage返回有关已存在进程的系统相关资源使用信息. 将其转换为适当的基础类型,例如Unix上的* syscall.Rusage,以访问其内容. (在Unix上,* syscall.Rusage与getrusage(2)手册页中定义的struct rusage匹配.)

func (*ProcessState) SystemTime

func (p *ProcessState) SystemTime() time.Duration

SystemTime返回退出进程及其子进程的系统CPU时间.

func (*ProcessState) UserTime

func (p *ProcessState) UserTime() time.Duration

UserTime返回已退出进程及其子进程的用户CPU时间.

type Signal

信号表示操作系统信号. 通常的底层实现依赖于操作系统:在Unix上是syscall.Signal.

type Signal interface {
    String() string
    Signal() // to distinguish from other Stringers
}

保证在所有系统上的os软件包中都存在的唯一信号值是os.Interrupt(向进程发送中断)和os.Kill(迫使进程退出). 在Windows上,未实现使用os.Process.Signal将os.Interrupt发送到进程. 它会返回错误而不是发送信号.

var (
    Interrupt Signal = syscall.SIGINT
    Kill      Signal = syscall.SIGKILL
)

type SyscallError

SyscallError记录来自特定系统调用的错误.

type SyscallError struct {
    Syscall string
    Err     error
}

func (*SyscallError) Error

func (e *SyscallError) Error() string

func (*SyscallError) Timeout 1.10

func (e *SyscallError) Timeout() bool

超时报告此错误是否表示超时.

func (*SyscallError) Unwrap 1.13

func (e *SyscallError) Unwrap() error

Subdirectories

Name Synopsis
..
exec 包exec运行外部命令.
signal 封装信号实现对输入信号的访问.
user 软件包用户允许按名称或ID查找用户帐户.

by  ICOPY.SITE