Documentation
¶
Overview ¶
osパッケージは、オペレーティングシステムの機能へのプラットフォームに依存しないインターフェースを提供します。 デザインはUnix風ですが、エラーハンドリングはGo風です。失敗した呼び出しはエラー番号ではなく、 error型の値を返します。しばしば、エラー内にさらに詳細な情報が含まれています。 例えば、ファイル名を取る呼び出しが失敗した場合、Open や Stat など、エラーは印刷時に失敗したファイル名を含み、 *PathError 型になります。これはさらなる情報のためにアンパックすることができます。
file, err := os.Open("file.go") // 読み込みアクセス用。 if err != nil { log.Fatal(err) }
オープンが失敗した場合、エラーメッセージは自己説明的であるようになります。
open file.go: ファイルまたはディレクトリが存在しません。
ファイルのデータは、バイトのスライスに読み込むことができます。ReadとWriteは、引数のスライスの長さからバイト数を取得します。
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])
Concurrency ¶
[File]のメソッドはファイルシステムの操作に対応しています。すべてが 同時実行に対して安全です。Fileに対する同時操作の最大数は、OSまたはシステムによって 制限される可能性があります。その数は高いはずですが、それを超えるとパフォーマンスが低下したり、 他の問題が発生する可能性があります。
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 CopyFS(dir string, fsys fs.FS) error
- func DirFS(dir string) fs.FS
- 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 MkdirTemp(dir, pattern string) (string, error)
- func NewSyscallError(syscall string, err error) error
- func Pipe() (r *File, w *File, err error)
- func ReadFile(name string) ([]byte, 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)
- func WriteFile(name string, data []byte, perm FileMode) error
- type DirEntry
- type File
- 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) ([]DirEntry, error)
- func (f *File) ReadFrom(r io.Reader) (n int64, 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)
- func (f *File) WriteTo(w io.Writer) (n int64, err error)
- type FileInfo
- type FileMode
- type LinkError
- type PathError
- type ProcAttr
- type Process
- 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() any
- func (p *ProcessState) SysUsage() any
- func (p *ProcessState) SystemTime() time.Duration
- func (p *ProcessState) UserTime() time.Duration
- type Signal
- type SyscallError
Examples ¶
Constants ¶
const ( // O_RDONLY、O_WRONLY、またはO_RDWRのいずれかを指定する必要があります。 O_RDONLY int = syscall.O_RDONLY O_WRONLY int = syscall.O_WRONLY O_RDWR int = syscall.O_RDWR // 残りの値はOrで結合して動作を制御できます。 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 )
オープンファイル時に基になるシステムのものをラップするフラグ。すべてのフラグが与えられたシステム上で実装されているわけではありません。
const ( SEEK_SET int = 0 SEEK_CUR int = 1 SEEK_END int = 2 )
値を探す。
廃止: io.SeekStart、io.SeekCurrent、io.SeekEnd を使用してください。
const ( PathSeparator = '/' PathListSeparator = ':' )
const ( // 単一の文字は、Stringメソッドの書式設定で使用される略語です。 ModeDir = fs.ModeDir ModeAppend = fs.ModeAppend ModeExclusive = fs.ModeExclusive ModeTemporary = fs.ModeTemporary ModeSymlink = fs.ModeSymlink ModeDevice = fs.ModeDevice ModeNamedPipe = fs.ModeNamedPipe ModeSocket = fs.ModeSocket ModeSetuid = fs.ModeSetuid ModeSetgid = fs.ModeSetgid ModeCharDevice = fs.ModeCharDevice ModeSticky = fs.ModeSticky ModeIrregular = fs.ModeIrregular // タイプビット用のマスク。通常のファイルでは、何も設定されません。 ModeType = fs.ModeType ModePerm = fs.ModePerm )
定義されたファイルモードのビットは、FileMode の最上位ビットです。 最下位の9ビットは、標準のUnixのrwxrwxrwxパーミッションです。 これらのビットの値は、パブリックAPIの一部と見なされ、 ワイヤープロトコルやディスクの表現で使用される場合があります。 これらの値は変更しないでくださいが、新しいビットが追加されるかもしれません。
const DevNull = "/dev/null"
DevNullはオペレーティングシステムの「nullデバイス」の名前です。 Unix-likeなシステムでは、"/dev/null"です。Windowsでは、"NUL"です。
Variables ¶
var ( // ErrInvalidは無効な引数を示します。 // Fileのメソッドは、レシーバーがnilの場合にこのエラーを返します。 ErrInvalid = fs.ErrInvalid ErrPermission = fs.ErrPermission ErrExist = fs.ErrExist ErrNotExist = fs.ErrNotExist ErrClosed = fs.ErrClosed ErrNoDeadline = errNoDeadline() ErrDeadlineExceeded = errDeadlineExceeded() )
一部の一般的なシステムコールエラーのポータブルな代替です。
このパッケージから返されるエラーは、errors.Is によってこれらのエラーと比較されることがあります。
var ( Stdin = NewFile(uintptr(syscall.Stdin), "/dev/stdin") Stdout = NewFile(uintptr(syscall.Stdout), "/dev/stdout") Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr") )
Stdin、Stdout、およびStderrは、標準入力、標準出力、および標準エラーファイルディスクリプタを指すオープンファイルです。
Goランタイムは、パニックやクラッシュの場合には標準エラーに書き込みます。 Stderrを閉じると、それらのメッセージは他の場所に転送される可能性があります。 たとえば、後で開かれるファイルに転送されるかもしれません。
var Args []string
Argsはコマンドラインの引数を保持し、プログラム名から開始します。
var ErrProcessDone = errors.New("os: process already finished")
ErrProcessDone は、Process が終了したことを示します。
Functions ¶
func Chmod ¶
Chmodは指定されたファイルのモードを変更します。 もしファイルがシンボリックリンクであれば、リンクのターゲットのモードを変更します。 エラーが発生した場合は、*PathError型になります。
オペレーティングシステムによって使用されるモードビットのサブセットが異なります。
Unixでは、モードのパーミッションビットであるModeSetuid、ModeSetgid、およびModeStickyが使用されます。
Windowsでは、モードの0o200ビット(所有者書き込み可能)のみが使用されます。 これにより、ファイルの読み取り専用属性が設定されるかクリアされるかが制御されます。 その他のビットは現在未使用です。 Go 1.12以前との互換性を保つために、ゼロ以外のモードを使用してください。 読み取り専用ファイルにはモード0o400、読み書き可能なファイルにはモード0o600を使用します。
Plan 9では、モードのパーミッションビットであるModeAppend、ModeExclusive、およびModeTemporaryが使用されます。
Example ¶
package main import ( "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" ) func main() { if err := os.Chmod("some-filename", 0644); err != nil { log.Fatal(err) } }
Output:
func Chown ¶
Chownは指定されたファイルの数値UIDとGIDを変更します。 ファイルがシンボリックリンクの場合、リンク先のUIDとGIDを変更します。 -1のUIDまたはGIDはその値を変更しないことを意味します。 エラーが発生した場合、型 *PathError になります。
WindowsまたはPlan 9の場合、Chownは常に syscall.EWINDOWS または EPLAN9のエラーを*PathErrorでラップして返します。
func Chtimes ¶
Chtimesは指定されたファイルのアクセス時間と修正時間を変更します。これはUnixのutime()やutimes()関数と同様です。 ゼロの time.Time 値は、対応するファイルの時間を変更しません。
基礎となるファイルシステムは、値を切り捨てたり、より正確でない時間単位に丸めたりするかもしれません。 エラーが発生した場合、*PathError 型になります。
Example ¶
package main import ( "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" "github.com/shogo82148/std/time" ) func main() { mtime := time.Date(2006, time.February, 1, 3, 4, 5, 0, time.UTC) atime := time.Date(2007, time.March, 2, 4, 5, 6, 0, time.UTC) if err := os.Chtimes("some-filename", atime, mtime); err != nil { log.Fatal(err) } }
Output:
func CopyFS ¶ added in v1.23.0
CopyFS copies the file system fsys into the directory dir, creating dir if necessary.
Files are created with mode 0o666 plus any execute permissions from the source, and directories are created with mode 0o777 (before umask).
CopyFS will not overwrite existing files, and returns an error if a file name in fsys already exists in the destination.
Symbolic links in fsys are not supported. A *PathError with Err set to ErrInvalid is returned when copying from a symbolic link.
Symbolic links in dir are followed.
Copying stops at and returns the first error encountered.
func DirFS ¶ added in v1.16.0
DirFSはディレクトリdirをルートとするファイルツリーのファイルシステム(fs.FS)を返します。
ただし、DirFS("/prefix")は、オペレーティングシステムへのOpen呼び出しが常に"/prefix"で始まることを保証するだけです。 つまり、DirFS("/prefix").Open("file")はos.Open("/prefix/file")と同じです。 よって、/prefix/fileが/prefixツリーの外部を指すシンボリックリンクである場合、DirFSを使用してもos.Openを使用してもアクセスが止まるわけではありません。 また、相対パスの場合、fs.FSのルート(DirFS("prefix")で返されるもの)は、後続のChdir呼び出しの影響を受けます。 したがって、ディレクトリツリーに任意のコンテンツが含まれる場合、DirFSは一般的なchrootスタイルのセキュリティメカニズムの代替ではありません。
ディレクトリdirは空ではありません。
結果は[io/fs.StatFS]、io/fs.ReadFileFS、[io/fs.ReadDirFS]を実装しています。
func Executable ¶ added in v1.8.0
Executableは、現在のプロセスを開始した実行可能ファイルのパス名を返します。 パスがまだ正しい実行可能ファイルを指しているとは限りません。 プロセスの開始にシンボリックリンクが使用された場合、オペレーティングシステムによって結果は シンボリックリンクまたはそれが指していたパスになる可能性があります。 安定した結果が必要な場合は、path/filepath.EvalSymlinks が役立ちます。
Executableは、エラーが発生しない限り、絶対パスを返します。
主な利用ケースは、実行可能ファイルに対して相対的に配置されたリソースを見つけることです。
func Exit ¶
func Exit(code int)
Exitは指定されたステータスコードで現在のプログラムを終了させます。 慣習的に、コード0は成功を示し、非ゼロはエラーを示します。 プログラムは直ちに終了します。延期された関数は実行されません。
移植性のために、ステータスコードは[0, 125]の範囲内にあるべきです。
func Expand ¶
Expandはマッピング関数に基づいて文字列内の${var}または$varを置き換えます。 例えば、os.ExpandEnv(s)は[os.Expand](s, os.Getenv)と同等です。
Example ¶
package main import ( "github.com/shogo82148/std/fmt" "github.com/shogo82148/std/os" ) func main() { mapper := func(placeholderName string) string { switch placeholderName { case "DAY_PART": return "morning" case "NAME": return "Gopher" } return "" } fmt.Println(os.Expand("Good ${DAY_PART}, $NAME!", mapper)) }
Output: Good morning, Gopher!
func ExpandEnv ¶
ExpandEnvは、文字列内の${var}または$varを現在の環境変数の値に応じて置換します。未定義の変数への参照は空文字列に置換されます。
Example ¶
package main import ( "github.com/shogo82148/std/fmt" "github.com/shogo82148/std/os" ) func main() { os.Setenv("NAME", "gopher") os.Setenv("BURROW", "/usr/gopher") fmt.Println(os.ExpandEnv("$NAME lives in ${BURROW}.")) }
Output: gopher lives in /usr/gopher.
func Getenv ¶
Getenvはキーで指定された環境変数の値を取得します。 もし変数が存在しない場合、空の値が返されます。 空の値と未設定の値を区別するためには、LookupEnv を使用してください。
Example ¶
package main import ( "github.com/shogo82148/std/fmt" "github.com/shogo82148/std/os" ) func main() { os.Setenv("NAME", "gopher") os.Setenv("BURROW", "/usr/gopher") fmt.Printf("%s lives in %s.\n", os.Getenv("NAME"), os.Getenv("BURROW")) }
Output: gopher lives in /usr/gopher.
func Getgroups ¶
Getgroupsは、呼び出し元が所属しているグループの数値IDの一覧を返します。
Windowsでは、syscall.EWINDOWS が返されます。代替手段については、os/user パッケージを参照してください。
func Getwd ¶
Getwdは現在のディレクトリに対応するルート付きパス名を返します。現在のディレクトリがシンボリックリンクによって複数のパスで到達可能な場合、Getwdはそのいずれかを返すことがあります。
func IsExist ¶
IsExistは、引数がファイルまたはディレクトリが既に存在することを報告するかどうかを示すブール値を返します。 これは[ErrExist]および一部のsyscallエラーによって満たされます。
この関数は、errors.Is よりも前に存在していました。これは、osパッケージによって返されるエラーのみをサポートしています。 新しいコードでは、errors.Is(err, fs.ErrExist)を使用するべきです。
func IsNotExist ¶
IsNotExistは、引数がファイルまたはディレクトリが存在しないことを報告するかどうかを示すブール値を返します。 これは[ErrNotExist]および一部のsyscallエラーによって満たされます。
この関数は、errors.Is よりも前に存在していました。これは、osパッケージによって返されるエラーのみをサポートしています。 新しいコードでは、errors.Is(err, fs.ErrNotExist)を使用するべきです。
func IsPathSeparator ¶
IsPathSeparator は c がディレクトリの区切り文字であるかどうかを報告します。
func IsPermission ¶
IsPermissionは、引数が許可が拒否されたことを報告するかどうかを示すブール値を返します。 これは[ErrPermission]および一部のsyscallエラーによって満たされます。
この関数はerrors.Isより前に存在しています。この関数はosパッケージが返すエラーのみをサポートしています。 新しいコードでは、errors.Is(err、fs.ErrPermission)を使用するべきです。
func IsTimeout ¶ added in v1.10.0
IsTimeoutは、引数がタイムアウトが発生したことを報告するかどうかを示すブール値を返します。
この関数は、errors.Is やエラーがタイムアウトを示すかどうかの概念よりも前から存在しています。たとえば、UnixのエラーコードEWOULDBLOCKは、 タイムアウトを示す場合と示さない場合があります。新しいコードでは、os.ErrDeadlineExceeded など、エラーが発生した呼び出しに適切な値を使用して errors.Isを使用するべきです。
func Lchown ¶
Lchownは指定されたファイルの数値UIDとGIDを変更します。 ファイルがシンボリックリンクの場合、リンク自体のUIDとGIDを変更します。 エラーが発生した場合は、*PathError 型のエラーが返されます。
Windowsでは、常に syscall.EWINDOWS エラーが返され、*PathErrorでラップされます。
func LookupEnv ¶ added in v1.5.0
LookupEnvは、キーで指定された環境変数の値を取得します。 もし環境変数が存在する場合、値(空である可能性があります)と真偽値trueが返されます。 そうでなければ、返される値は空で、真偽値はfalseです。
Example ¶
package main import ( "github.com/shogo82148/std/fmt" "github.com/shogo82148/std/os" ) func main() { show := func(key string) { val, ok := os.LookupEnv(key) if !ok { fmt.Printf("%s not set\n", key) } else { fmt.Printf("%s=%s\n", key, val) } } os.Setenv("SOME_KEY", "value") os.Setenv("EMPTY_KEY", "") show("SOME_KEY") show("EMPTY_KEY") show("MISSING_KEY") }
Output: SOME_KEY=value EMPTY_KEY= MISSING_KEY not set
func Mkdir ¶
Example ¶
package main import ( "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" ) func main() { err := os.Mkdir("testdir", 0750) if err != nil && !os.IsExist(err) { log.Fatal(err) } err = os.WriteFile("testdir/testfile.txt", []byte("Hello, Gophers!"), 0660) if err != nil { log.Fatal(err) } }
Output:
func MkdirAll ¶
MkdirAllは、パスという名前のディレクトリと、必要な親ディレクトリを作成し、nilを返します。 それ以外の場合はエラーを返します。 MkdirAllが作成するすべてのディレクトリには、パーミッションビットperm(umaskの前)が使用されます。 パスが既にディレクトリである場合、MkdirAllは何もせずにnilを返します。
Example ¶
package main import ( "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" ) func main() { err := os.MkdirAll("test/subdir", 0750) if err != nil { log.Fatal(err) } err = os.WriteFile("test/subdir/testfile.txt", []byte("Hello, Gophers!"), 0660) if err != nil { log.Fatal(err) } }
Output:
func MkdirTemp ¶ added in v1.16.0
MkdirTempはディレクトリdir内に新しい一時ディレクトリを作成し、 新しいディレクトリのパス名を返します。 新しいディレクトリの名前は、patternの末尾にランダムな文字列を追加することで生成されます。 patternに"*"が含まれている場合、ランダムな文字列は最後の"*"に置換されます。 ファイルは、umaskを適用する前に、モード0o600で作成されます。 dirが空の文字列の場合、MkdirTempは一時ファイルのデフォルトディレクトリ(TempDirによって返される)を使用します。 同時に複数のプログラムやゴルーチンがMkdirTempを呼び出しても、同じディレクトリを選択しません。 ディレクトリは不要になった時に削除するのは呼び出し元の責任です。
Example ¶
package main import ( "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" "github.com/shogo82148/std/path/filepath" ) func main() { dir, err := os.MkdirTemp("", "example") if err != nil { log.Fatal(err) } defer os.RemoveAll(dir) // クリーンアップ file := filepath.Join(dir, "tmpfile") if err := os.WriteFile(file, []byte("content"), 0666); err != nil { log.Fatal(err) } }
Output:
Example (Suffix) ¶
package main import ( "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" "github.com/shogo82148/std/path/filepath" ) func main() { logsDir, err := os.MkdirTemp("", "*-logs") if err != nil { log.Fatal(err) } defer os.RemoveAll(logsDir) // クリーンアップ // ログは必要に応じて早期にクリーニングアウトできます // *-logsで終わるすべてのディレクトリを検索してください。 globPattern := filepath.Join(os.TempDir(), "*-logs") matches, err := filepath.Glob(globPattern) if err != nil { log.Fatalf("Failed to match %q: %v", globPattern, err) } for _, match := range matches { if err := os.RemoveAll(match); err != nil { log.Printf("Failed to remove %q: %v", match, err) } } }
Output:
func NewSyscallError ¶
NewSyscallErrorは、指定されたシステムコール名とエラーの詳細を持つ新しい SyscallError をエラーとして返します。 便利な機能として、errがnilの場合、NewSyscallErrorはnilを返します。
func ReadFile ¶ added in v1.16.0
ReadFileは指定されたファイルを読み込み、その内容を返します。 成功した呼び出しはerr == nilを返します。 err == EOFではありません。 ReadFileはファイル全体を読み込むため、ReadからのEOFをエラーとして報告しません。
Example ¶
package main import ( "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" ) func main() { data, err := os.ReadFile("testdata/hello") if err != nil { log.Fatal(err) } os.Stdout.Write(data) }
Output: Hello, Gophers!
func Readlink ¶
Readlinkは、指定されたシンボリックリンクの宛先を返します。 エラーがある場合、そのタイプは*PathErrorになります。
リンク先が相対的な場合、Readlinkはそれを絶対パスに解決せずに 相対パスを返します。
Example ¶
package main import ( "github.com/shogo82148/std/errors" "github.com/shogo82148/std/fmt" "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" "github.com/shogo82148/std/path/filepath" ) func main() { // First, we create a relative symlink to a file. d, err := os.MkdirTemp("", "") if err != nil { log.Fatal(err) } defer os.RemoveAll(d) targetPath := filepath.Join(d, "hello.txt") if err := os.WriteFile(targetPath, []byte("Hello, Gophers!"), 0644); err != nil { log.Fatal(err) } linkPath := filepath.Join(d, "hello.link") if err := os.Symlink("hello.txt", filepath.Join(d, "hello.link")); err != nil { if errors.Is(err, errors.ErrUnsupported) { // Allow the example to run on platforms that do not support symbolic links. fmt.Printf("%s links to %s\n", filepath.Base(linkPath), "hello.txt") return } log.Fatal(err) } // Readlink returns the relative path as passed to os.Symlink. dst, err := os.Readlink(linkPath) if err != nil { log.Fatal(err) } fmt.Printf("%s links to %s\n", filepath.Base(linkPath), dst) var dstAbs string if filepath.IsAbs(dst) { dstAbs = dst } else { // Symlink targets are relative to the directory containing the link. dstAbs = filepath.Join(filepath.Dir(linkPath), dst) } // Check that the target is correct by comparing it with os.Stat // on the original target path. dstInfo, err := os.Stat(dstAbs) if err != nil { log.Fatal(err) } targetInfo, err := os.Stat(targetPath) if err != nil { log.Fatal(err) } if !os.SameFile(dstInfo, targetInfo) { log.Fatalf("link destination (%s) is not the same file as %s", dstAbs, targetPath) } }
Output: hello.link links to hello.txt
func RemoveAll ¶
RemoveAllはpathとその中に含まれるすべての子要素を削除します。 削除できる範囲で削除を実行しますが、最初に出会ったエラーを返します。 パスが存在しない場合、RemoveAllはnil(エラーなし)を返します。 エラーがある場合、それは *PathError 型のエラーです。
func Rename ¶
Renameはoldpathをnewpathに名前を変更(移動)します。 newpathが既に存在していてディレクトリではない場合、Renameはそれを置き換えます。 newpathが既に存在していてディレクトリである場合、Renameはエラーを返します。 oldpathとnewpathが異なるディレクトリにある場合、OS固有の制限が適用される場合があります。 同じディレクトリ内でも、非UnixプラットフォームではRenameはアトミックな操作ではありません。 エラーが発生した場合、それは*LinkErrorの型である可能性があります。
func SameFile ¶
SameFileはfi1とfi2が同じファイルを表しているかどうかを報告します。 例えば、Unixでは、2つの基礎となる構造体のデバイスとinodeフィールドが同一であることを意味します。他のシステムでは、決定はパス名に基づく場合もあります。 SameFileは、このパッケージの Stat によって返された結果にのみ適用されます。 それ以外の場合はfalseを返します。
func Symlink ¶
Symlinkはnewnameをoldnameへのシンボリックリンクとして作成します。 Windowsでは、存在しないoldnameへのシンボリックリンクはファイルのシンボリックリンクとして作成されます。 もしoldnameが後でディレクトリとして作成された場合、シンボリックリンクは機能しません。 エラーが発生した場合は、*LinkError型のエラーになります。
func TempDir ¶
func TempDir() string
TempDirは一時ファイルに使用するデフォルトのディレクトリを返します。
Unixシステムでは、$TMPDIRが空でない場合はそれを返し、さもなくば/tmpを返します。 Windowsでは、GetTempPathを使用し、最初の空でない値を%TMP%、%TEMP%、%USERPROFILE%、またはWindowsディレクトリから返します。 Plan 9では、/tmpを返します。
このディレクトリは、存在することやアクセス可能な許可を持っていることが保証されていません。
func Unsetenv ¶ added in v1.4.0
Unsetenvは1つの環境変数を削除します。
Example ¶
package main import ( "github.com/shogo82148/std/os" ) func main() { os.Setenv("TMPDIR", "/my/tmp") defer os.Unsetenv("TMPDIR") }
Output:
func UserCacheDir ¶ added in v1.11.0
UserCacheDirは、ユーザー固有のキャッシュデータに使用するデフォルトのルートディレクトリを返します。 ユーザーはこのディレクトリ内にアプリケーション固有のサブディレクトリを作成して使用する必要があります。
Unixシステムでは、https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html で指定されている $XDG_CACHE_HOMEが空でない場合はその値を返し、そうでない場合は$HOME/.cacheを返します。 Darwinでは、$HOME/Library/Cachesを返します。 Windowsでは、%LocalAppData%を返します。 Plan 9では、$home/lib/cacheを返します。
位置を特定できない場合(例えば、$HOMEが定義されていない場合)や、 $XDG_CACHE_HOMEのパスが相対パスである場合、エラーを返します。
Example ¶
package main import ( "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" "github.com/shogo82148/std/path/filepath" "github.com/shogo82148/std/sync" ) func main() { dir, dirErr := os.UserCacheDir() if dirErr == nil { dir = filepath.Join(dir, "ExampleUserCacheDir") } getCache := func(name string) ([]byte, error) { if dirErr != nil { return nil, &os.PathError{Op: "getCache", Path: name, Err: os.ErrNotExist} } return os.ReadFile(filepath.Join(dir, name)) } var mkdirOnce sync.Once putCache := func(name string, b []byte) error { if dirErr != nil { return &os.PathError{Op: "putCache", Path: name, Err: dirErr} } mkdirOnce.Do(func() { if err := os.MkdirAll(dir, 0700); err != nil { log.Printf("can't create user cache dir: %v", err) } }) return os.WriteFile(filepath.Join(dir, name), b, 0600) } // Read and store cached data. // … _ = getCache _ = putCache }
Output:
func UserConfigDir ¶ added in v1.13.0
UserConfigDirは、ユーザー固有の設定データに使用するデフォルトのルートディレクトリを返します。 ユーザーはこのディレクトリ内にアプリケーション固有のサブディレクトリを作成して使用する必要があります。
Unixシステムでは、https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html で指定されている $XDG_CONFIG_HOMEが空でない場合はその値を返し、そうでない場合は$HOME/.configを返します。 Darwinでは、$HOME/Library/Application Supportを返します。 Windowsでは、%AppData%を返します。 Plan 9では、$home/libを返します。
位置を特定できない場合(例えば、$HOMEが定義されていない場合)や、 $XDG_CONFIG_HOMEのパスが相対パスである場合、エラーを返します。
Example ¶
package main import ( "github.com/shogo82148/std/bytes" "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" "github.com/shogo82148/std/path/filepath" ) func main() { dir, dirErr := os.UserConfigDir() var ( configPath string origConfig []byte ) if dirErr == nil { configPath = filepath.Join(dir, "ExampleUserConfigDir", "example.conf") var err error origConfig, err = os.ReadFile(configPath) if err != nil && !os.IsNotExist(err) { // The user has a config file but we couldn't read it. // Report the error instead of ignoring their configuration. log.Fatal(err) } } // Use and perhaps make changes to the config. config := bytes.Clone(origConfig) // … // Save changes. if !bytes.Equal(config, origConfig) { if configPath == "" { log.Printf("not saving config changes: %v", dirErr) } else { err := os.MkdirAll(filepath.Dir(configPath), 0700) if err == nil { err = os.WriteFile(configPath, config, 0600) } if err != nil { log.Printf("error saving config changes: %v", err) } } } }
Output:
func UserHomeDir ¶ added in v1.12.0
UserHomeDirは現在のユーザーのホームディレクトリを返します。
Unix(macOSを含む)では、$HOME環境変数を返します。 Windowsでは、%USERPROFILE%を返します。 Plan 9では、$home環境変数を返します。
環境変数に期待される変数が設定されていない場合、UserHomeDir は、プラットフォーム固有のデフォルト値または非nilのエラーを返します。
func WriteFile ¶ added in v1.16.0
WriteFileはデータを指定されたファイルに書き込みます。必要に応じて新規作成されます。 ファイルが存在しない場合、WriteFileはパーミッションperm(umaskの前に)で作成します。 ファイルが存在する場合、WriteFileは書き込み前にファイルを切り詰め、パーミッションは変更しません。 WriteFileは複数のシステムコールが必要なため、途中で失敗するとファイルは一部だけ書き込まれた状態になる可能性があります。
Example ¶
package main import ( "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" ) func main() { err := os.WriteFile("testdata/hello", []byte("Hello, Gophers!"), 0666) if err != nil { log.Fatal(err) } }
Output:
Types ¶
type DirEntry ¶ added in v1.16.0
DirEntryはディレクトリから読み込まれたエントリです (ReadDir 関数やファイルの File.ReadDir メソッドを使用して読み込まれます)。
func ReadDir ¶ added in v1.16.0
ReadDirは指定されたディレクトリを読み込み、 ファイル名順にソートされたすべてのディレクトリエントリを返します。 ディレクトリの読み込み中にエラーが発生した場合、 ReadDirはエラーが発生する前に読み込むことができたエントリと共にエラーを返します。
Example ¶
package main import ( "github.com/shogo82148/std/fmt" "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" ) func main() { files, err := os.ReadDir(".") if err != nil { log.Fatal(err) } for _, file := range files { fmt.Println(file.Name()) } }
Output:
type File ¶
type File struct {
// contains filtered or unexported fields
}
Fileはオープンされたファイルディスクリプタを表します。
Fileのメソッドは並行使用に対して安全です。
func Create ¶
Createは指定されたファイルを作成または切り詰めます。ファイルが既に存在する場合、ファイルは切り詰められます。 ファイルが存在しない場合、モード0o666(umaskの前)で作成されます。 成功した場合、返されたFileのメソッドを使用してI/Oを行うことができます。 関連付けられたファイルディスクリプタはO_RDWRモードになります。エラーが発生した場合、*PathError型のエラーとなります。
func CreateTemp ¶ added in v1.16.0
CreateTempはディレクトリdirに新しい一時ファイルを作成し、 ファイルを読み書きするために開き、結果のファイルを返します。 ファイル名はpatternを取り、末尾にランダムな文字列を追加して生成されます。 もしpatternに"*"が含まれている場合、最後の"*"はランダムな文字列に置き換えられます。 ファイルは、umaskを適用する前に、モード0o600で作成されます。 dirが空の文字列の場合、CreateTempは一時ファイル用のデフォルトディレクトリ(TempDir が返す)を使用します。 同時にCreateTempを呼び出す複数のプログラムやゴルーチンは同じファイルを選びません。 呼び出し元は、ファイルのNameメソッドを使用してファイルのパス名を取得できます。 ファイルが不要になったら、呼び出し元の責任でファイルを削除する必要があります。
Example ¶
package main import ( "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" ) func main() { f, err := os.CreateTemp("", "example") if err != nil { log.Fatal(err) } defer os.Remove(f.Name()) // クリーンアップ if _, err := f.Write([]byte("content")); err != nil { log.Fatal(err) } if err := f.Close(); err != nil { log.Fatal(err) } }
Output:
Example (Suffix) ¶
package main import ( "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" ) func main() { f, err := os.CreateTemp("", "example.*.txt") if err != nil { log.Fatal(err) } defer os.Remove(f.Name()) // クリーンアップ if _, err := f.Write([]byte("content")); err != nil { f.Close() log.Fatal(err) } if err := f.Close(); err != nil { log.Fatal(err) } }
Output:
func NewFile ¶
NewFileは指定されたファイルディスクリプタと名前で新しいFileを返します。 fdが有効なファイルディスクリプタでない場合、返される値はnilになります。 Unixシステムでは、ファイルディスクリプタが非同期モードの場合、NewFileはSetDeadlineメソッドが動作するポーラブルなFileを返そうとします。
NewFileに渡した後、fdはFdメソッドのコメントで説明されている条件の下で無効になり、同じ制約が適用されます。
func Open ¶
Openは指定されたファイルを読み取り用に開きます。成功した場合、 返されたファイルのメソッドを使用して読み取りができます。 関連付けられたファイルディスクリプタはO_RDONLYのモードで持ちます。 エラーが発生した場合、*PathError型のエラーが返されます。
func OpenFile ¶
OpenFileは一般化されたオープンコールであり、ほとんどのユーザーは代わりにOpenまたはCreateを使用します。指定されたフラグ(O_RDONLYなど)で指定された名前のファイルを開きます。ファイルが存在しない場合、O_CREATEフラグが渡されると、モード許可(umask前)で作成されます。成功すると、返されたFileのメソッドを使用してI/Oが可能です。エラーが発生した場合、*PathErrorのタイプになります。
Example ¶
package main import ( "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" ) func main() { f, err := os.OpenFile("notes.txt", os.O_RDWR|os.O_CREATE, 0644) if err != nil { log.Fatal(err) } if err := f.Close(); err != nil { log.Fatal(err) } }
Output:
Example (Append) ¶
package main import ( "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" ) func main() { // ファイルが存在しない場合は作成し、ファイルに追記する f, err := os.OpenFile("access.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { log.Fatal(err) } if _, err := f.Write([]byte("appended some data\n")); err != nil { f.Close() // エラーを無視する; エラーが優先される log.Fatal(err) } if err := f.Close(); err != nil { log.Fatal(err) } }
Output:
func (*File) Chdir ¶
Chdirは現在の作業ディレクトリを指定されたディレクトリpathに変更します。 pathはディレクトリでなければなりません。 エラーが発生した場合、*PathError の型で返されます。
func (*File) Chown ¶
Chownは指定したファイルの数値uidとgidを変更します。 エラーが発生した場合、それは *PathError の型です。
Windowsでは、いつも syscall.EWINDOWS のエラーを返し、*PathErrorにラップします。
func (*File) Close ¶
Closeは File を閉じて、I/Oに使用できなくします。 File.SetDeadline をサポートするファイルでは、保留中のI/O操作はキャンセルされ、 ErrClosed エラーとともに即座に返ります。 Closeが既に呼び出されている場合はエラーが返されます。
func (*File) Fd ¶
Fdは、開いているファイルを参照する整数型のUnixファイルディスクリプタを返します。 もしfが閉じている場合、ファイルディスクリプタは無効になります。 もしfがガベージコレクションされる場合、ファイナライザーがファイルディスクリプタを閉じる可能性があり、 それにより無効になります。ファイナライザーがいつ実行されるかの詳細については、 runtime.SetFinalizer を参照してください。Unixシステムでは、これにより File.SetDeadline メソッドが動作しなくなります。 ファイルディスクリプタは再利用可能であるため、返されるファイルディスクリプタは、 fの File.Close メソッドを通じて、またはガベージコレクション中のそのファイナライザーによってのみ閉じることができます。 それ以外の場合、ガベージコレクション中にファイナライザーが同じ(再利用された)番号の無関係なファイルディスクリプタを閉じる可能性があります。
代替として、f.SyscallConnメソッドを参照してください。
func (*File) Read ¶
ReadはFileから最大len(b)バイトを読み込み、bに格納します。 読み込まれたバイト数とエラーがあればそれを返します。 ファイルの末尾では、Readは0とio.EOFを返します。
func (*File) ReadAt ¶
ReadAt はオフセット off から始まる File から len(b) バイトを読み取ります。 読み取ったバイト数とエラー(ある場合)を返します。 ReadAt は常に、n < len(b) の場合には非 nil のエラーを返します。 ファイルの終端では、そのエラーは io.EOF です。
func (*File) ReadDir ¶ added in v1.16.0
ReadDirはファイルfに関連付けられたディレクトリの内容を読み取り、ディレクトリの順序でDirEntry値のスライスを返します。 同じファイルに対する後続の呼び出しは、ディレクトリ内の後続のDirEntryレコードを生成します。
n > 0の場合、ReadDirは最大n個の DirEntry レコードを返します。 この場合、ReadDirが空のスライスを返す場合、なぜかを説明するエラーが返されます。 ディレクトリの終わりでは、エラーは io.EOF です。
n <= 0の場合、ReadDirはディレクトリに残っているすべてのDirEntryレコードを返します。 成功した場合、nilのエラーを返します(io.EOFではありません)。
func (*File) Readdir ¶
Readdirはファイルに関連付けられたディレクトリの内容を読み取り、 ディレクトリの順序で Lstat によって返される最大n個の FileInfo 値のスライスを返します。 同じファイルに対する後続の呼び出しは、さらにFileInfosを返します。
n > 0の場合、Readdirは最大n個のFileInfo構造体を返します。この場合、 Readdirが空のスライスを返すと、非nilのエラーが返されます。 ディレクトリの末尾では、エラーは io.EOF です。
n <= 0の場合、Readdirはディレクトリ内のすべてのFileInfoを 単一のスライスで返します。この場合、Readdirが成功した場合 (ディレクトリの終わりまで読み込む)、スライスとnilのエラーが返されます。 ディレクトリの終わりより前にエラーが発生した場合、Readdirはその地点まで読み取った FileInfoと非nilのエラーを返します。
パフォーマンスの向上のため、ほとんどのクライアントはより効率的なReadDirメソッドを使用することができます。
func (*File) Readdirnames ¶
Readdirnamesは、ファイルに関連付けられたディレクトリの内容を読み取り、ディレクトリ内のファイルの名前を最大n個まで含むスライスを返します。追加の呼び出しでは、さらに名前を返します。
n>0の場合、Readdirnamesは最大n個の名前を返します。この場合、Readdirnamesが空のスライスを返す場合は、非nilのエラーが返され、その理由が説明されます。ディレクトリの終わりでは、エラーは io.EOF です。
n <= 0の場合、Readdirnamesはディレクトリからのすべての名前を単一のスライスで返します。この場合、Readdirnamesが成功し(ディレクトリの終わりまで読み込むことができる)、スライスとnilのエラーを返します。ディレクトリの終わり前にエラーが発生した場合、Readdirnamesはその時点まで読み取られた名前と非nilのエラーを返します。
func (*File) Seek ¶
Seekは、オフセットをオフセットに設定します。オフセットは、whenceによって解釈されます。 whenceの解釈は次のとおりです:0はファイルの原点に対する相対的なオフセット、1は現在のオフセットに対する相対的なオフセット、2は終端に対する相対的なオフセットを意味します。 エラーがあれば、新しいオフセットとエラーを返します。 O_APPENDで開かれたファイルに対するSeekの振る舞いは指定されていません。
func (*File) SetDeadline ¶ added in v1.10.0
SetDeadlineは、ファイルの読み取りと書き込みのデッドラインを設定します。 SetReadDeadlineおよびSetWriteDeadlineの両方を呼び出すのと同等です。
デッドラインを設定できるファイルの種類には制限があります。デッドラインをサポートしないファイルにSetDeadlineを呼び出すと、ErrNoDeadlineが返されます。 ほとんどのシステムでは、通常のファイルはデッドラインをサポートしませんが、パイプはサポートします。
デッドラインは、I/Oのブロックではなく、エラーとなる絶対時刻です。デッドラインは、未来および保留中のすべてのI/Oに適用されます。ただし、即座に次のReadまたはWrite呼び出しに適用されるわけではありません。 デッドラインが超過された後は、将来のデッドラインを設定することで、接続をリフレッシュできます。
デッドラインが超過されると、ReadまたはWriteまたは他のI/Oメソッドの呼び出しは、ErrDeadlineExceededをラップしたエラーを返します。 これは、errors.Is(err, os.ErrDeadlineExceeded)を使用してテストできます。 そのエラーにはTimeoutメソッドが実装されており、Timeoutメソッドを呼び出すとtrueが返ります。ただし、デッドラインが超過されていなくても、Timeoutがtrueを返す可能性がある他のエラーもあります。
成功したReadまたはWrite呼び出しの後、デッドラインを繰り返し延長することでアイドルタイムアウトを実装できます。
tのゼロ値は、I/O操作がタイムアウトしないことを意味します。
func (*File) SetReadDeadline ¶ added in v1.10.0
SetReadDeadlineは、将来のRead呼び出しと現在ブロックされているRead呼び出しの締め切りを設定します。 tのゼロ値は、Readがタイムアウトしないことを意味します。 すべてのファイルが締め切りを設定できるわけではありません。SetDeadlineを参照してください。
func (*File) SetWriteDeadline ¶ added in v1.10.0
SetWriteDeadlineは、将来のWrite呼び出しや現在ブロックされているWrite呼び出しの締め切りを設定します。 Writeがタイムアウトしても、n>0が返される場合があります。 これは、一部のデータが正常に書き込まれたことを示します。 tのゼロ値は、Writeがタイムアウトしないことを意味します。 すべてのファイルが締め切りを設定できるわけではありません。SetDeadlineを参照してください。
func (*File) Stat ¶
Statはファイルに関する情報を FileInfo 構造体で返します。 エラーがある場合、*PathError 型になります。
func (*File) Sync ¶
Syncはファイルの現在の内容を安定したストレージへコミットします。 通常、これはファイルシステムのメモリ上のコピーをフラッシュし、 最近書き込まれたデータをディスクに書き込むことを意味しています。
func (*File) SyscallConn ¶ added in v1.12.0
SyscallConnは生のファイルを返します。 これはsyscall.Connインターフェースを実装しています。
func (*File) Truncate ¶
Truncateはファイルのサイズを変更します。 I/Oオフセットは変更しません。 エラーが発生した場合、*PathError 型になります。
func (*File) Write ¶
Writeはbからlen(b)バイトをFileに書き込みます。 書き込まれたバイト数とエラー(ある場合)を返します。 n != len(b)の場合、Writeはnilでないエラーを返します。
func (*File) WriteAt ¶
WriteAtはオフセットoffから始まるFileにlen(b)バイトを書き込みます。 書き込まれたバイト数とエラー(ある場合)を返します。 n != len(b)の場合、WriteAtはnilでないエラーを返します。
ファイルがO_APPENDフラグで開かれている場合、WriteAtはエラーを返します。
func (*File) WriteString ¶
WriteStringはWriteと似ていますが、バイトのスライスではなく、文字列sの内容を書き込みます。
type FileInfo ¶
FileInfoはファイルを記述し、Stat および Lstat によって返されます。
func Lstat ¶
Lstatは、名前付きファイルに関する FileInfo を返します。 ファイルがシンボリックリンクである場合、返されるFileInfoはシンボリックリンクを説明します。 Lstatは、リンクをたどる試みをしません。 エラーがある場合、*PathError 型になります。
Windowsでは、ファイルが他の名前付きエンティティ(シンボリックリンクやマウントされたフォルダなど)の代替となるリパースポイントである場合、返されるFileInfoはリパースポイントを説明し、解決しようとしません。
type FileMode ¶
FileModeはファイルのモードと許可ビットを表します。 ビットはすべてのシステムで同じ定義を持っているため、 ファイルの情報をシステム間で移動する際に移植性があります。 すべてのビットがすべてのシステムで適用されるわけではありません。 必須のビットは ModeDir であり、ディレクトリに対して適用されます。
Example ¶
package main import ( "github.com/shogo82148/std/fmt" "github.com/shogo82148/std/io/fs" "github.com/shogo82148/std/log" "github.com/shogo82148/std/os" ) func main() { fi, err := os.Lstat("some-filename") if err != nil { log.Fatal(err) } fmt.Printf("permissions: %#o\n", fi.Mode().Perm()) // 0o400, 0o777, etc. switch mode := fi.Mode(); { case mode.IsRegular(): fmt.Println("regular file") case mode.IsDir(): fmt.Println("directory") case mode&fs.ModeSymlink != 0: fmt.Println("symbolic link") case mode&fs.ModeNamedPipe != 0: fmt.Println("named pipe") } }
Output:
type ProcAttr ¶
type ProcAttr struct { // Dir が空でない場合、子プロセスを作成する前にディレクトリに変更します。 Dir string // もしEnvがnilでない場合、それは新しいプロセスの環境変数をEnvironによって返される形式で指定します。 // もしEnvがnilである場合、Environの結果が使用されます。 Env []string // Filesは新しいプロセスに引き継がれるオープンファイルを指定します。最初の3つのエントリは標準入力、標準出力、標準エラーに対応します。実装は、基になるオペレーティングシステムに応じて、追加のエントリをサポートすることがあります。nilのエントリは、そのファイルがプロセスの開始時に閉じられることを意味します。 // Unixシステムでは、StartProcessはこれらのFile値をブロッキングモードに変更します。つまり、SetDeadlineは動作しなくなり、Closeを呼び出してもReadまたはWriteが中断されません。 Files []*File // オペレーティングシステム固有のプロセス作成属性です。 // このフィールドを設定すると、プログラムが正常に実行されない場合や、 // 一部のオペレーティングシステムではコンパイルすらできないことがあります。 Sys *syscall.SysProcAttr }
ProcAttrはStartProcessによって開始される新しいプロセスに適用される属性を保持します。
type Process ¶
type Process struct { Pid int // contains filtered or unexported fields }
Processは StartProcess によって作成されたプロセスに関する情報を格納します。
func FindProcess ¶
FindProcessは、pidによって実行中のプロセスを検索します。
返される Process は、基礎となるオペレーティングシステムのプロセスに関する情報を取得するために使用できます。
Unixシステムでは、FindProcessは常に成功し、プロセスが存在するかどうかに関わらず、指定されたpidのProcessを返します。 実際にプロセスが存在するかどうかをテストするには、p.Signal(syscall.Signal(0))がエラーを報告するかどうかを確認してください。
func StartProcess ¶
StartProcessは、name、argv、attrで指定されたプログラム、引数、属性で新しいプロセスを開始します。 argvスライスは新しいプロセスで os.Args になるため、通常はプログラム名で始まります。
呼び出し元のgoroutineが runtime.LockOSThread でオペレーティングシステムスレッドをロックし、継承可能なOSレベルのスレッド状態を変更した場合(例えば、LinuxやPlan 9の名前空間)、新しいプロセスは呼び出し元のスレッド状態を継承します。
StartProcessは低レベルなインターフェースです。os/exec パッケージはより高レベルなインターフェースを提供します。
エラーが発生した場合、*PathError 型となります。
func (*Process) Kill ¶
Killは Process を直ちに終了させます。Killはプロセスが実際に終了するのを待ちません。これによってプロセス自体のみを終了させるため、プロセスが起動した他のプロセスには影響を与えません。
func (*Process) Release ¶
Releaseは Process pに関連付けられたリソースを解放し、将来使用できなくします。 Process.Wait が呼び出されない場合にのみReleaseを呼び出す必要があります。
type ProcessState ¶
type ProcessState struct {
// contains filtered or unexported fields
}
ProcessStateはWaitによって報告されるプロセスの情報を格納します。
func (*ProcessState) ExitCode ¶ added in v1.12.0
func (p *ProcessState) ExitCode() int
ExitCodeは終了したプロセスの終了コードを返します。プロセスがまだ終了していない場合や、シグナルによって終了した場合は-1を返します。
func (*ProcessState) Exited ¶
func (p *ProcessState) Exited() bool
Exited はプログラムが終了したかどうかを報告します。 Unixシステムでは、この関数はプログラムが exit を呼び出して終了した場合に true を返し、 シグナルによってプログラムが終了した場合には false を返します。
func (*ProcessState) String ¶
func (p *ProcessState) String() string
func (*ProcessState) Success ¶
func (p *ProcessState) Success() bool
Successは、プログラムが正常に終了したかどうかを報告します。 たとえば、Unixでは終了ステータス0で終了した場合などです。
func (*ProcessState) Sys ¶
func (p *ProcessState) Sys() any
Sysはプロセスに関するシステム依存の終了情報を返します。 それを適切な基礎となる型に変換して、その内容にアクセスします。 例:Unixの場合、syscall.WaitStatus として変換します。
func (*ProcessState) SysUsage ¶
func (p *ProcessState) SysUsage() any
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 ¶
type Signal interface { String() string Signal() }
Signalはオペレーティングシステムのシグナルを表します。 通常、基礎となる実装はオペレーティングシステムに依存します: Unixではsyscall.Signalです。
type SyscallError ¶
SyscallErrorは特定のシステムコールからのエラーを記録します。
func (*SyscallError) Error ¶
func (e *SyscallError) Error() string
func (*SyscallError) Timeout ¶ added in v1.10.0
func (e *SyscallError) Timeout() bool
Timeoutは、このエラーがタイムアウトを表すかどうかを報告します。
func (*SyscallError) Unwrap ¶ added in v1.13.0
func (e *SyscallError) Unwrap() error
Source Files
¶
- dir.go
- dir_unix.go
- dirent_linux.go
- env.go
- error.go
- error_errno.go
- exec.go
- exec_linux.go
- exec_posix.go
- exec_unix.go
- executable.go
- executable_procfs.go
- file.go
- file_open_unix.go
- file_posix.go
- file_unix.go
- getwd.go
- path.go
- path_unix.go
- pidfd_linux.go
- pipe2_unix.go
- proc.go
- rawconn.go
- removeall_at.go
- stat.go
- stat_linux.go
- stat_unix.go
- sticky_notbsd.go
- sys.go
- sys_linux.go
- sys_unix.go
- tempfile.go
- types.go
- types_unix.go
- wait_waitid.go
- zero_copy_linux.go
- zero_copy_posix.go
Directories
¶
Path | Synopsis |
---|---|
execパッケージは外部コマンドを実行します。
|
execパッケージは外部コマンドを実行します。 |
internal/fdtest
Package fdtest provides test helpers for working with file descriptors across exec.
|
Package fdtest provides test helpers for working with file descriptors across exec. |
Package signal implements access to incoming signals.
|
Package signal implements access to incoming signals. |
userパッケージは、名前またはIDによるユーザーアカウントの検索を可能にします。
|
userパッケージは、名前またはIDによるユーザーアカウントの検索を可能にします。 |