os

package
v0.23.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 28, 2022 License: BSD-3-Clause Imports: 12 Imported by: 0

Documentation

Overview

Package os implements a subset of the Go "os" package. See https://godoc.org/os for details.

Note that the current implementation is blocking. This limitation should be removed in a future version.

Package os implements a subset of the Go "os" package. See https://godoc.org/os for details.

Note that the current implementation is blocking. This limitation should be removed in a future version.

Index

Constants

View Source
const (
	SEEK_SET int = io.SeekStart
	SEEK_CUR int = io.SeekCurrent
	SEEK_END int = io.SeekEnd
)

Seek whence values.

Deprecated: Use io.SeekStart, io.SeekCurrent, and io.SeekEnd.

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

	// Mask for the type bits. For regular files, none will be set.
	ModeType = fs.ModeType

	ModePerm = fs.ModePerm // Unix permission bits, 0o777
)

The defined file mode bits are the most significant bits of the FileMode. The nine least-significant bits are the standard Unix rwxrwxrwx permissions. The values of these bits should be considered part of the public API and may be used in wire protocols or disk representations: they must not be changed, although new bits might be added.

View Source
const (
	PathSeparator     = '/' // OS-specific path separator
	PathListSeparator = ':' // OS-specific path list separator
)
View Source
const DevNull = "/dev/null"

Variables

View Source
var (
	ErrInvalid    = errors.New("invalid argument")
	ErrPermission = errors.New("permission denied")
	ErrClosed     = errors.New("file already closed")

	// Portable analogs of some common system call errors.
	// Note that these are exported for use in the Filesystem interface.
	ErrUnsupported    = errors.New("operation not supported")
	ErrNotImplemented = errors.New("operation not implemented")
	ErrNotExist       = errors.New("file not found")
	ErrExist          = errors.New("file exists")
)
View Source
var (
	Stdin  = NewFile(uintptr(syscall.Stdin), "/dev/stdin")
	Stdout = NewFile(uintptr(syscall.Stdout), "/dev/stdout")
	Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr")
)

Stdin, Stdout, and Stderr are open Files pointing to the standard input, standard output, and standard error file descriptors.

View Source
var Args []string

Args hold the command-line arguments, starting with the program name.

View Source
var ErrDeadlineExceeded error = &DeadlineExceededError{}

ErrDeadlineExceeded is returned for an expired deadline. This is exported by the os package as os.ErrDeadlineExceeded.

Functions

func Chdir added in v0.22.0

func Chdir(dir string) error

Chdir changes the current working directory to the named directory. If there is an error, it will be of type *PathError.

func Chmod added in v0.22.0

func Chmod(name string, mode FileMode) error

Chmod changes the mode of the named file to mode. If the file is a symbolic link, it changes the mode of the link's target. If there is an error, it will be of type *PathError.

A different subset of the mode bits are used, depending on the operating system.

On Unix, the mode's permission bits, ModeSetuid, ModeSetgid, and ModeSticky are used.

On Windows, only the 0200 bit (owner writable) of mode is used; it controls whether the file's read-only attribute is set or cleared. The other bits are currently unused. For compatibility with Go 1.12 and earlier, use a non-zero mode. Use mode 0400 for a read-only file and 0600 for a readable+writable file.

func Clearenv added in v0.22.0

func Clearenv()

Clearenv deletes all environment variables.

func DirFS added in v0.23.0

func DirFS(dir string) fs.FS

DirFS returns a file system (an fs.FS) for the tree of files rooted at the directory dir.

Note that DirFS("/prefix") only guarantees that the Open calls it makes to the operating system will begin with "/prefix": DirFS("/prefix").Open("file") is the same as os.Open("/prefix/file"). So if /prefix/file is a symbolic link pointing outside the /prefix tree, then using DirFS does not stop the access any more than using os.Open does. DirFS is therefore not a general substitute for a chroot-style security mechanism when the directory tree contains arbitrary content.

func Environ added in v0.22.0

func Environ() []string

Environ returns a copy of strings representing the environment, in the form "key=value".

func Executable added in v0.20.0

func Executable() (string, error)

func Exit added in v0.7.0

func Exit(code int)

Exit causes the current program to exit with the given status code. Conventionally, code zero indicates success, non-zero an error. The program terminates immediately; deferred functions are not run.

func Expand added in v0.22.0

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

Expand replaces ${var} or $var in the string based on the mapping function. For example, os.ExpandEnv(s) is equivalent to os.Expand(s, os.Getenv).

func ExpandEnv added in v0.22.0

func ExpandEnv(s string) string

ExpandEnv replaces ${var} or $var in the string according to the values of the current environment variables. References to undefined variables are replaced by the empty string.

func Getegid added in v0.19.0

func Getegid() int

Getegid returns the numeric effective group id of the caller.

On non-POSIX systems, it returns -1.

func Getenv added in v0.14.0

func Getenv(key string) string

Getenv retrieves the value of the environment variable named by the key. It returns the value, which will be empty if the variable is not present. To distinguish between an empty value and an unset value, use LookupEnv.

func Geteuid added in v0.19.0

func Geteuid() int

Geteuid returns the numeric effective user id of the caller.

On non-POSIX systems, it returns -1.

func Getgid added in v0.19.0

func Getgid() int

Getgid returns the numeric group id of the caller.

On non-POSIX systems, it returns -1.

func Getpid added in v0.7.0

func Getpid() int

Getpid returns the process id of the caller, or -1 if unavailable.

func Getppid added in v0.19.0

func Getppid() int

Getppid returns the process id of the caller's parent, or -1 if unavailable.

func Getuid added in v0.19.0

func Getuid() int

Getuid returns the numeric user id of the caller.

On non-POSIX systems, it returns -1.

func Getwd added in v0.7.0

func Getwd() (string, error)

func Hostname added in v0.14.0

func Hostname() (name string, err error)

func IsExist added in v0.7.0

func IsExist(err error) bool

func IsNotExist added in v0.7.0

func IsNotExist(err error) bool

func IsPathSeparator added in v0.7.0

func IsPathSeparator(c uint8) bool

IsPathSeparator reports whether c is a directory separator character.

func IsPermission added in v0.14.0

func IsPermission(err error) bool

func LookupEnv added in v0.17.0

func LookupEnv(key string) (string, bool)

LookupEnv retrieves the value of the environment variable named by the key. If the variable is present in the environment the value (which may be empty) is returned and the boolean is true. Otherwise the returned value will be empty and the boolean will be false.

func Mkdir added in v0.7.0

func Mkdir(path string, perm FileMode) error

Mkdir creates a directory. If the operation fails, it will return an error of type *PathError.

func MkdirAll added in v0.22.0

func MkdirAll(path string, perm FileMode) error

MkdirAll creates a directory named path, along with any necessary parents, and returns nil, or else returns an error. The permission bits perm (before umask) are used for all directories that MkdirAll creates. If path is already a directory, MkdirAll does nothing and returns nil.

func MkdirTemp added in v0.20.0

func MkdirTemp(dir, pattern string) (string, error)

MkdirTemp creates a new temporary directory in the directory dir and returns the pathname of the new directory. The new directory's name is generated by adding a random string to the end of pattern. If pattern includes a "*", the random string replaces the last "*" instead. If dir is the empty string, MkdirTemp uses the default directory for temporary files, as returned by TempDir. Multiple programs or goroutines calling MkdirTemp simultaneously will not choose the same directory. It is the caller's responsibility to remove the directory when it is no longer needed.

func Mount added in v0.14.0

func Mount(prefix string, filesystem Filesystem)

Mount mounts the given filesystem in the filesystem abstraction layer of the os package. It is not possible to unmount filesystems. Filesystems added later will override earlier filesystems.

The provided prefix must start and end with a forward slash. This is true for the root directory ("/") for example.

func NewSyscallError added in v0.14.0

func NewSyscallError(syscall string, err error) error

func Pipe added in v0.22.0

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

func ReadFile added in v0.18.0

func ReadFile(name string) ([]byte, error)

ReadFile reads the named file and returns the contents. A successful call returns err == nil, not err == EOF. Because ReadFile reads the whole file, it does not treat an EOF from Read as an error to be reported.

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 added in v0.14.0

func Remove(path string) error

Remove removes a file or (empty) directory. If the operation fails, it will return an error of type *PathError.

func RemoveAll added in v0.22.0

func RemoveAll(path string) error

RemoveAll removes path and any children it contains. It removes everything it can but returns the first error it encounters. If the path does not exist, RemoveAll returns nil (no error). If there is an error, it will be of type *PathError.

func Rename added in v0.22.0

func Rename(oldpath, newpath string) error

Rename renames (moves) oldpath to newpath. If newpath already exists and is not a directory, Rename replaces it. OS-specific restrictions may apply when oldpath and newpath are in different directories. If there is an error, it will be of type *LinkError.

func SameFile added in v0.22.0

func SameFile(fi1, fi2 FileInfo) bool

SameFile reports whether fi1 and fi2 describe the same file. For example, on Unix this means that the device and inode fields of the two underlying structures are identical; on other systems the decision may be based on the path names. SameFile only applies to results returned by this package's Stat. It returns false in other cases.

func Setenv added in v0.22.0

func Setenv(key, value string) error

Setenv sets the value of the environment variable named by the key. It returns an error, if any.

func Symlink(oldname, newname string) error

Symlink creates newname as a symbolic link to oldname. On Windows, a symlink to a non-existent oldname creates a file symlink; if oldname is later created as a directory the symlink will not work. If there is an error, it will be of type *LinkError.

func TempDir added in v0.7.0

func TempDir() string

TempDir returns the default directory to use for temporary files.

On Unix systems, it returns $TMPDIR if non-empty, else /tmp. On Windows, it uses GetTempPath, returning the first non-empty value from %TMP%, %TEMP%, %USERPROFILE%, or the Windows directory.

The directory is neither guaranteed to exist nor have accessible permissions.

func Unsetenv added in v0.22.0

func Unsetenv(key string) error

Unsetenv unsets a single environment variable.

func UserHomeDir added in v0.23.0

func UserHomeDir() (string, error)

UserHomeDir returns the current user's home directory.

On Unix, including macOS, it returns the $HOME environment variable. On Windows, it returns %USERPROFILE%. On Plan 9, it returns the $home environment variable.

func WriteFile added in v0.18.0

func WriteFile(name string, data []byte, perm FileMode) error

WriteFile writes data to the named file, creating it if necessary. If the file does not exist, WriteFile creates it with permissions perm (before umask); otherwise WriteFile truncates it before writing, without changing permissions.

Types

type DeadlineExceededError added in v0.23.0

type DeadlineExceededError struct{}

DeadlineExceededError is returned for an expired deadline.

func (*DeadlineExceededError) Error added in v0.23.0

func (e *DeadlineExceededError) Error() string

Implement the net.Error interface. The string is "i/o timeout" because that is what was returned by earlier Go versions. Changing it may break programs that match on error strings.

func (*DeadlineExceededError) Temporary added in v0.23.0

func (e *DeadlineExceededError) Temporary() bool

func (*DeadlineExceededError) Timeout added in v0.23.0

func (e *DeadlineExceededError) Timeout() bool

type DirEntry added in v0.18.0

type DirEntry = fs.DirEntry

A DirEntry is an entry read from a directory (using the ReadDir function or a File's ReadDir method).

func ReadDir added in v0.19.0

func ReadDir(name string) ([]DirEntry, error)

ReadDir reads the named directory, returning all its directory entries sorted by filename. If an error occurs reading the directory, ReadDir returns the entries it was able to read before the error, along with the error.

type File

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

File represents an open file descriptor.

func Create added in v0.7.0

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

Create creates the named file, overwriting it if it already exists.

func CreateTemp added in v0.19.0

func CreateTemp(dir, pattern string) (*File, error)

CreateTemp creates a new temporary file in the directory dir, opens the file for reading and writing, and returns the resulting file. The filename is generated by taking pattern and adding a random string to the end. If pattern includes a "*", the random string replaces the last "*". If dir is the empty string, CreateTemp uses the default directory for temporary files, as returned by TempDir. Multiple programs or goroutines calling CreateTemp simultaneously will not choose the same file. The caller can use the file's Name method to find the pathname of the file. It is the caller's responsibility to remove the file when it is no longer needed.

func NewFile

func NewFile(fd uintptr, name string) *File

func Open added in v0.7.0

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

Open opens the file named for reading.

func OpenFile added in v0.7.0

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

OpenFile opens the named file. If the operation fails, the returned error will be of type *PathError.

func (*File) Close

func (f *File) Close() (err error)

Close closes the File, rendering it unusable for I/O.

func (*File) Fd

func (f *File) Fd() uintptr

Fd returns the file handle referencing the open file.

func (*File) Name added in v0.14.0

func (f *File) Name() string

Name returns the name of the file with which it was opened.

func (*File) Read

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

Read reads up to len(b) bytes from the File. It returns the number of bytes read and any error encountered. At end of file, Read returns 0, io.EOF.

func (*File) ReadAt added in v0.14.0

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

ReadAt reads up to len(b) bytes from the File at the given absolute offset. It returns the number of bytes read and any error encountered, possible io.EOF. At end of file, Read returns 0, io.EOF.

func (*File) ReadDir added in v0.18.0

func (f *File) ReadDir(n int) ([]DirEntry, error)

ReadDir reads the contents of the directory associated with the file f and returns a slice of DirEntry values in directory order. Subsequent calls on the same file will yield later DirEntry records in the directory.

If n > 0, ReadDir returns at most n DirEntry records. In this case, if ReadDir returns an empty slice, it will return an error explaining why. At the end of a directory, the error is io.EOF.

If n <= 0, ReadDir returns all the DirEntry records remaining in the directory. When it succeeds, it returns a nil error (not io.EOF).

func (*File) Readdir added in v0.7.0

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

Readdir reads the contents of the directory associated with file and returns a slice of up to n FileInfo values, as would be returned by Lstat, in directory order. Subsequent calls on the same file will yield further FileInfos.

If n > 0, Readdir returns at most n FileInfo structures. In this case, if Readdir returns an empty slice, it will return a non-nil error explaining why. At the end of a directory, the error is io.EOF.

If n <= 0, Readdir returns all the FileInfo from the directory in a single slice. In this case, if Readdir succeeds (reads all the way to the end of the directory), it returns the slice and a nil error. If it encounters an error before the end of the directory, Readdir returns the FileInfo read until that point and a non-nil error.

Most clients are better served by the more efficient ReadDir method.

func (*File) Readdirnames added in v0.7.0

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

Readdirnames reads the contents of the directory associated with file and returns a slice of up to n names of files in the directory, in directory order. Subsequent calls on the same file will yield further names.

If n > 0, Readdirnames returns at most n names. In this case, if Readdirnames returns an empty slice, it will return a non-nil error explaining why. At the end of a directory, the error is io.EOF.

If n <= 0, Readdirnames returns all the names from the directory in a single slice. In this case, if Readdirnames succeeds (reads all the way to the end of the directory), it returns the slice and a nil error. If it encounters an error before the end of the directory, Readdirnames returns the names read until that point and a non-nil error.

func (*File) Seek added in v0.19.0

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

Seek sets the offset for the next Read or Write on file to offset, interpreted according to whence: 0 means relative to the origin of the file, 1 means relative to the current offset, and 2 means relative to the end. It returns the new offset and an error, if any. The behavior of Seek on a file opened with O_APPEND is not specified.

If f is a directory, the behavior of Seek varies by operating system; you can seek to the beginning of the directory on Unix-like operating systems, but not on Windows.

func (*File) Stat added in v0.7.0

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

Stat returns the FileInfo structure describing file. If there is an error, it will be of type *PathError.

func (*File) Sync added in v0.14.0

func (f *File) Sync() error

Sync is a stub, not yet implemented

func (*File) SyscallConn added in v0.14.0

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

func (*File) Truncate added in v0.22.0

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

Truncate is a stub, not yet implemented

func (*File) Write

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

Write writes len(b) bytes to the File. It returns the number of bytes written and an error, if any. Write returns a non-nil error when n != len(b).

func (*File) WriteAt added in v0.21.0

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

func (*File) WriteString added in v0.21.0

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

WriteString is like Write, but writes the contents of string s rather than a slice of bytes.

type FileHandle added in v0.14.0

type FileHandle interface {
	// Read reads up to len(b) bytes from the file.
	Read(b []byte) (n int, err error)

	// ReadAt reads up to len(b) bytes from the file starting at the given absolute offset
	ReadAt(b []byte, offset int64) (n int, err error)

	// Seek resets the file pointer relative to start, current position, or end
	Seek(offset int64, whence int) (newoffset int64, err error)

	// Write writes up to len(b) bytes to the file.
	Write(b []byte) (n int, err error)

	// Close closes the file, making it unusable for further writes.
	Close() (err error)
}

FileHandle is an interface that should be implemented by filesystems implementing the Filesystem interface.

WARNING: this interface is not finalized and may change in a future version.

type FileInfo added in v0.7.0

type FileInfo = fs.FileInfo

func Lstat added in v0.7.0

func Lstat(name string) (FileInfo, error)

Lstat returns a FileInfo describing the named file. If the file is a symbolic link, the returned FileInfo describes the symbolic link. Lstat makes no attempt to follow the link. If there is an error, it will be of type *PathError.

func Stat added in v0.7.0

func Stat(name string) (FileInfo, error)

Stat returns a FileInfo describing the named file. If there is an error, it will be of type *PathError.

type FileMode added in v0.7.0

type FileMode = fs.FileMode

type Filesystem added in v0.14.0

type Filesystem interface {
	// OpenFile opens the named file.
	OpenFile(name string, flag int, perm FileMode) (uintptr, error)

	// Mkdir creates a new directoy with the specified permission (before
	// umask). Some filesystems may not support directories or permissions.
	Mkdir(name string, perm FileMode) error

	// Remove removes the named file or (empty) directory.
	Remove(name string) error
}

Filesystem provides an interface for generic filesystem drivers mounted in the os package. The errors returned must be one of the os.Err* errors, or a custom error if one doesn't exist. It should not be a *PathError because errors will be wrapped with a *PathError by the filesystem abstraction.

WARNING: this interface is not finalized and may change in a future version.

type LinkError added in v0.22.0

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

LinkError records an error during a link or symlink or rename system call and the paths that caused it.

func (*LinkError) Error added in v0.22.0

func (e *LinkError) Error() string

func (*LinkError) Unwrap added in v0.22.0

func (e *LinkError) Unwrap() error

type PathError added in v0.7.0

type PathError struct {
	Op   string
	Path string
	Err  error
}

PathError records an error and the operation and file path that caused it. TODO: PathError moved to io/fs in go 1.16 and left an alias in os/errors.go. Do the same once we drop support for go 1.15.

func (*PathError) Error added in v0.7.0

func (e *PathError) Error() string

func (*PathError) Unwrap added in v0.22.0

func (e *PathError) Unwrap() error

type ProcAttr added in v0.22.0

type ProcAttr struct {
	Dir   string
	Env   []string
	Files []*File
	Sys   *syscall.SysProcAttr
}

type Process added in v0.22.0

type Process struct {
	Pid int
}

func StartProcess added in v0.22.0

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

func (*Process) Kill added in v0.22.0

func (p *Process) Kill() error

func (*Process) Signal added in v0.23.0

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

func (*Process) Wait added in v0.22.0

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

type ProcessState added in v0.22.0

type ProcessState struct {
}

func (*ProcessState) ExitCode added in v0.23.0

func (p *ProcessState) ExitCode() int

ExitCode returns the exit code of the exited process, or -1 if the process hasn't exited or was terminated by a signal.

func (*ProcessState) String added in v0.22.0

func (p *ProcessState) String() string

func (*ProcessState) Success added in v0.22.0

func (p *ProcessState) Success() bool

func (*ProcessState) Sys added in v0.23.0

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

Sys returns system-dependent exit information about the process. Convert it to the appropriate underlying type, such as syscall.WaitStatus on Unix, to access its contents.

type Signal added in v0.14.0

type Signal interface {
	String() string
	Signal() // to distinguish from other Stringers
}
var (
	Interrupt Signal = syscall.SIGINT
	Kill      Signal = syscall.SIGKILL
)

The only signal values guaranteed to be present in the os package on all systems are os.Interrupt (send the process an interrupt) and os.Kill (force the process to exit). On Windows, sending os.Interrupt to a process with os.Process.Signal is not implemented; it will return an error instead of sending a signal.

type SyscallError added in v0.14.0

type SyscallError struct {
	Syscall string
	Err     error
}

SyscallError records an error from a specific system call.

func (*SyscallError) Error added in v0.14.0

func (e *SyscallError) Error() string

func (*SyscallError) Unwrap added in v0.14.0

func (e *SyscallError) Unwrap() error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL