import "os"

オペレーティングシステムの機能へのプラットフォームに依存しないインタフェースを提供します。Unixライクな設計です。

パッケージファイル

dir_darwin.go dir_freebsd.go dir_linux.go dir_nacl.go dir_windows.go env.go env_unix.go env_windows.go error.go exec.go file.go file_unix.go file_windows.go getwd.go path.go proc.go stat_darwin.go stat_freebsd.go stat_linux.go stat_nacl.go stat_windows.go sys_bsd.go sys_linux.go sys_nacl.go sys_windows.go time.go types.go

定数

Open用のフラグで、システムが持つフラグをラップしています。すべてのフラグがシステム上で実装されているとは限りません。

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_ASYNC    int = syscall.O_ASYNC    // I/Oの準備ができたときにシグナルを生成する。
    O_CREAT    int = syscall.O_CREAT    // 存在しなければファイルを新規作成する。
    O_EXCL     int = syscall.O_EXCL     // O_CREATと合わせて使用。ファイルは存在してはならない。
    O_NOCTTY   int = syscall.O_NOCTTY   // ファイルを制御端末にしない。
    O_NONBLOCK int = syscall.O_NONBLOCK // ノンブロッキングモードで開く。
    O_NDELAY   int = O_NONBLOCK         // O_NONBLOCKのシノニム
    O_SYNC     int = syscall.O_SYNC     // 同期I/Oとして開く。
    O_TRUNC    int = syscall.O_TRUNC    // 可能なら、開いたときにファイルをトランケート。
    O_CREATE   int = O_CREAT            // 存在しなければファイルを新規作成する。
)

Waitのオプション

const (
    WNOHANG   = syscall.WNOHANG  // 終了したプロセスがなくても待たない。
    WSTOPPED  = syscall.WSTOPPED // セットすると、停止したサブプロセスのステータスも報告。
    WUNTRACED = WSTOPPED
    WRUSAGE   = 1 << 20 // リソースの使用状況を記録。
)

DevNullは、オペレーティングシステムの「ヌルデバイス」の名前です。Unix系のシステムでは「/dev/null」、Windowsでは「NUL」です。

const DevNull = "NUL"
const DevNull = "/dev/null"

変数

Stdin、Stdout、Stderrはオープンされた標準入力、標準出力、標準エラーを示すファイルデスクプリタです。

var (
    Stdin  = NewFile(syscall.Stdin, "/dev/stdin")
    Stdout = NewFile(syscall.Stdout, "/dev/stdout")
    Stderr = NewFile(syscall.Stderr, "/dev/stderr")
)
var Args []string // runtimeによって提供される

ENOENVは、環境変数が存在しないことを示すErrorです。

var ENOENV = NewError("no such environment variable")
var Envs []string // runtimeによって提供される

Chdir関数

func Chdir(dir string) Error

Chdirは、カレントの作業ディレクトリを指定したディレクトリに変更します。

Chmod関数

func Chmod(name string, mode uint32) Error

Chmodは、指定したファイルのモードを変更します。ファイルがシンボリックリンクのときは、リンクのターゲットのモードが変更されます。

Chown関数

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

Chownは、指定したファイルのuidとgidの値を変更します。ファイルがシンボリックリンクのときは、リンクのターゲットのuidとgidが変更されます。

Chtimes関数

func Chtimes(name string, atime_ns int64, mtime_ns int64) Error

Chtimesは、指定したファイルのアクセス時刻および変更時刻を変更します。Unixのutime()やutimes()関数と同様です。

引数の時間は、ナノ秒で指定しますが、背後にあるファイルシステムが、この値をより粗い単位に切り捨てや丸めを行う可能性があります。

Clearenv関数

func Clearenv()

Clearenvは、すべての環境変数を削除します。

Environ関数

func Environ() []string

Environは、環境変数を「key=value」形式で表した文字列の配列を返します。

Exec関数

func Exec(name string, argv []string, envv []string) Error

Execは、指定したバイナリを引数argv、環境envvとともに実行し、カレントプロセスと置き換えます。成功したときはリターンせず、失敗したときにはErrorを返します。ほとんどの場合、プログラムの実行にはForkExecを使う方が適しています。

Exit関数

func Exit(code int)

Exitは、ステータスコードとともにカレントのプログラムを終了させます。codeの値は一般的に0のときは成功を示し、0以外の時はエラーを示します。

Expand関数

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

Expandは、文字列内の${var}または$varをmapping関数を使って置換します。定義されていない変数は、空の文字列に置き換えられます。

ForkExec関数

func ForkExec(name string, argv []string, envv []string, dir string, fd []*File) (pid int, err Error)

ForkExecは、カレントのプロセスをフォークし、name、argv、envvによって指定されるプログラム、引数、環境でExecを実行します。この関数はフォークしたプロセスidとエラーのときはErrorを返します。配列fdで指定したファイルデスクプリタは新しいプロセスにセットされます。fd[0]はUnixのファイルデスクプリタ0(標準入力)、fd[1]はデスクプリタ1という具合です。この要素にnilを指定したときは、該当するファイルデスクプリタを子プロセスに渡さないことを意味します。dirが空でないとき、子プロセスはプログラムが実行される前にそのディレクトリにChdirします。

Getegid関数

func Getegid() int

Getegidは、呼び出したユーザの実効グループIDを数値で返します。

Getenv関数

func Getenv(key string) string

Getenvは、keyで指定した名前を持つ環境変数の値を返します。返される値は、変数が設定されていないときは空文字列になります。

Getenverror関数

func Getenverror(key string) (value string, err Error)

Getenverrorは、keyで指定した名前を持つ環境変数の値を返します。値と、エラーのときエラーを返します。

Geteuid関数

func Geteuid() int

Geteuidは、呼び出したユーザの実効ユーザIDを数値で返します。

Getgid関数

func Getgid() int

Getgidは、呼び出したユーザのグループIDを数値で返します。

Getgroups関数

func Getgroups() ([]int, Error)

Getgroupsは、呼び出したユーザが所属するグループidの数値のリストを返します。

Getpagesize関数

func Getpagesize() int

Getpagesizeは、システムのメモリのページサイズを返します。

Getpid関数

func Getpid() int

Getpidは、呼び出したプロセスのプロセスidを返します。

Getppid関数

func Getppid() int

Getppidは、呼び出したプロセスの親のプロセスidを返します。

Getuid関数

func Getuid() int

Getuidは、呼び出したユーザのユーザIDを数値で返します。

Getwd関数

func Getwd() (string, Error)

Getwdは、カレントディレクトリをルートからのパスで返します。カレントディレクトリが複数のパスからたどり着けるとき(シンボリックリンクのため)は、そのうちのひとつが返されます。

Hostname関数

func Hostname() (name string, err Error)

Hostnameは、カーネルから得られたホスト名が返されます。

Lchown関数

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

Lchownは、指定したファイルのuidとgidの値を変更します。ファイルがシンボリックリンクのときは、シンボリック自身のuidとgidが変更されます。

func Link(oldname, newname string) Error

Linkは、ハードリンクを作成します。

Mkdir関数

func Mkdir(name string, perm uint32) Error

Mkdirは、指定した名前とパーミッションビットで新しいディレクトリを作成します。エラーが起きたときはエラーが返されます。

MkdirAll関数

func MkdirAll(path string, perm uint32) Error

MkdirAllは、指定したパス名のディレクトリを必要とする親ディレクトリとともに作成し、nilまたはエラーを返します。パーミッションビットpermは作成されるすべてのディレクトリに適用されます。パスがすでにディレクトリとして存在するときはMkdirAllは何もせずnilを返します。

func Readlink(name string) (string, Error)

Readlinkは、シンボリックリンクの内容(リンクの到達点)を読み込みます。この関数は内容とエラーのときはエラーを返します。

Remove関数

func Remove(name string) Error

Removeは、指定したファイルまたはディレクトリを削除します。

RemoveAll関数

func RemoveAll(path string) Error

RemoveAllは、パスとその中に含まれる子を削除します。この関数は可能な限りのすべてを削除しますが、最初に発生したエラーを返します。パスが存在しないときはnil(エラーではない)が返ります。

Rename関数

func Rename(oldname, newname string) Error

Renameは、ファイルの名前を変更します。

Setenv関数

func Setenv(key, value string) Error

Setenvは、keyで指定した名前の環境変数に値をセットします。エラーの時はエラーが返されます。

ShellExpand関数

func ShellExpand(s string) string

ShellExpandは、文字列内の${var}または$varを対応するオペレーティングの環境変数の値で置換します。定義されていない変数への参照は、空の文字列に置き換えられます。

func Symlink(oldname, newname string) Error

Symlinkは、シンボリックリンクを作成します。

TempDir関数

func TempDir() string

TempDirは、テンポラリファイルを格納するためのデフォルトのディレクトリを返します。

Time関数

func Time() (sec int64, nsec int64, err Error)

Timeは、現在時刻の秒数と、秒以下のナノ秒と、エラーがあればエラーを返します。現在時刻をナノ秒換算すると1e9*sec+nsecになります。時刻値の0はUnix時刻の起点です。

Truncate関数

func Truncate(name string, size int64) Error

Truncateは、指定したファイルのサイズを変更します。ファイルがシンボリックリンクのときは、リンクのターゲットのサイズが変更されます。

Errno型

Errno は、Unixのエラー番号です。EINVALといった名前はErrnoをErrorに変換しただけの単純なラッパーです。

type Errno int64

(Errno) String関数

func (e Errno) String() string

(Errno) Temporary関数

func (e Errno) Temporary() bool

(Errno) Timeout関数

func (e Errno) Timeout() bool

Error型

Errorは、エラーの状態を文字列で表すことができます。

type Error interface {
    String() string
}

Unixエラーとしてよく知られているもの。

var (
    EPERM        Error = Errno(syscall.EPERM)
    ENOENT       Error = Errno(syscall.ENOENT)
    ESRCH        Error = Errno(syscall.ESRCH)
    EINTR        Error = Errno(syscall.EINTR)
    EIO          Error = Errno(syscall.EIO)
    ENXIO        Error = Errno(syscall.ENXIO)
    E2BIG        Error = Errno(syscall.E2BIG)
    ENOEXEC      Error = Errno(syscall.ENOEXEC)
    EBADF        Error = Errno(syscall.EBADF)
    ECHILD       Error = Errno(syscall.ECHILD)
    EDEADLK      Error = Errno(syscall.EDEADLK)
    ENOMEM       Error = Errno(syscall.ENOMEM)
    EACCES       Error = Errno(syscall.EACCES)
    EFAULT       Error = Errno(syscall.EFAULT)
    EBUSY        Error = Errno(syscall.EBUSY)
    EEXIST       Error = Errno(syscall.EEXIST)
    EXDEV        Error = Errno(syscall.EXDEV)
    ENODEV       Error = Errno(syscall.ENODEV)
    ENOTDIR      Error = Errno(syscall.ENOTDIR)
    EISDIR       Error = Errno(syscall.EISDIR)
    EINVAL       Error = Errno(syscall.EINVAL)
    ENFILE       Error = Errno(syscall.ENFILE)
    EMFILE       Error = Errno(syscall.EMFILE)
    ENOTTY       Error = Errno(syscall.ENOTTY)
    EFBIG        Error = Errno(syscall.EFBIG)
    ENOSPC       Error = Errno(syscall.ENOSPC)
    ESPIPE       Error = Errno(syscall.ESPIPE)
    EROFS        Error = Errno(syscall.EROFS)
    EMLINK       Error = Errno(syscall.EMLINK)
    EPIPE        Error = Errno(syscall.EPIPE)
    EAGAIN       Error = Errno(syscall.EAGAIN)
    EDOM         Error = Errno(syscall.EDOM)
    ERANGE       Error = Errno(syscall.ERANGE)
    EADDRINUSE   Error = Errno(syscall.EADDRINUSE)
    ECONNREFUSED Error = Errno(syscall.ECONNREFUSED)
    ENAMETOOLONG Error = Errno(syscall.ENAMETOOLONG)
    EAFNOSUPPORT Error = Errno(syscall.EAFNOSUPPORT)
)

EOFは、これ以上読み込むデータないときにReadが返すErrorです。関数は入力の終わりを礼儀正しく伝えるためだけにEOFを返すべきです。構造化されたデータストリームで予想外のEOFが起こったときは、io.ErrUnexpectedEOFもしくはより詳細な情報を含む別のエラーを返す方が適切です。

var EOF Error = eofError(0)

NewError関数

func NewError(s string) Error

NewErrorは、sをErrorインタフェースを満たしているErrorStringに変換します。

NewSyscallError関数

func NewSyscallError(syscall string, errno int) Error

NewSyscallErrorは、与えられたシステムコール名とエラー番号で新しいSyscallErrorを作成し、Errorとして返します。便宜的にerrnoが0のときはnilを返します。

ErrorString型

埋込みやラップによりErrorインタフェースを簡単に実装できるヘルパー型です。

type ErrorString string

(ErrorString) String関数

func (e ErrorString) String() string

(ErrorString) Temporary関数

func (e ErrorString) Temporary() bool

(ErrorString) Timeout関数

func (e ErrorString) Timeout() bool

File型

Fileは、オープンされたファイルデスクプリタを表します。

type File struct {
    // contains unexported fields
}

NewFile関数

func NewFile(fd int, name string) *File

NewFileは、与えられたファイルデスクプリタと名前を持つ新しいFileを返します。

Open関数

func Open(name string, flag int, perm uint32) (file *File, err Error)

Openは、指定された名前のファイルを、指定したフラグ(O_RDONLYなど)と適用できればperm(0666など)を使って開きます。成功したときに返されるFileのメソッドは入出力に使うことができます。この関数はFileと、エラーがあればエラーを返します。

Pipe関数

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

Pipeは、接続されたFileのペアを返します。 rから読み込むとwに書き込まれたバイトデータが返されます。この関数は2つのFileと、エラーがあればエラーを返します。

(*File) Chdir関数

func (f *File) Chdir() Error

Chdirは、カレントの作業ディレクトリをfに変更します。これはディレクトリである必要があります。

(*File) Chmod関数

func (f *File) Chmod(mode uint32) Error

Chmodは、ファイルのモードをmodeに変更します。

(*File) Chown関数

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

Chownは、指定したファイルのuidとgidを変更します。

(*File) Close関数

func (file *File) Close() Error

Closeは、FileをクローズしてI/Oを使えないようにします。エラーがあればエラーを返します。

(*File) Fd関数

func (file *File) Fd() int

Fdは、オープンしたファイルの整数値であるUnixファイルデスクプリタを返します。

(*File) Name関数

func (file *File) Name() string

Nameは、fileをオープンしたときのファイル名を返します。

(*File) Read関数

func (file *File) Read(b []byte) (n int, err Error)

Readは、Fileからlen(b)バイト読み込みます。この関数は読み込んだバイト数と、エラーがあればエラーを返します。ファイルの終わりはバイト数0とerrにEOFがセットされることで通知されます。

(*File) ReadAt関数

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

ReadAtは、Fileのバイトオフセットoffからlen(b)バイト読み込みます。この関数は読み込んだバイト数と、エラーがあればエラーを返します。ファイルの終わりはバイト数0とerrにEOFがセットされることで通知されます。ReadAtは、n != len(b)のとき常にnil以外のエラーを返します。

(*File) Readdir関数

func (file *File) Readdir(count int) (fi []FileInfo, err Error)

Readdirは、fileと関連するディレクトリの内容をディレクトリ順に読み込み、Lstatが返すFileInfo構造体の配列(上限数はcount)を返します。すぐあとに同じfileを使って呼び出しを行うと、その先の続きのFileInfoが返されます。countにマイナス値を指定するとEOFまで読み込みます。この関数は配列と、エラーがあればエラーを返します。

(*File) Readdirnames関数

func (file *File) Readdirnames(count int) (names []string, err Error)

Readdirnamesは、fileと関連するディレクトリの内容をディレクトリ順に読み込み、名前の配列(上限数はcount)を返します。すぐあとに同じfileを使って呼び出しを行うと、その先の続きの名前が返されます。countにマイナス値を指定するとEOFまで読み込みます。この関数は配列と、エラーがあればエラーを返します。

(*File) Seek関数

func (file *File) Seek(offset int64, whence int) (ret int64, err Error)

Seekは、次の読み込みまたは書き込みのオフセット値としてoffsetを設定します。offsetは、whenceの値によって次のように解釈されます。0のときはファイルの先頭からの相対位置、1のときはカレントの位置からの相対位置、 2のときはファイルの終りからの相対位置です。この関数は新しいオフセット値と、エラーがあればエラーを返します。

(*File) Stat関数

func (file *File) Stat() (fi *FileInfo, err Error)

Statは、fileの情報を格納したFileInfo構造体を返します。この関数はFileInfoと、エラーがあればエラーを返します。

(*File) Truncate関数

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

Truncateは、ファイルのサイズを変更します。この関数はI/Oオフセットを変更しません。

(*File) Write関数

func (file *File) Write(b []byte) (n int, err Error)

Writeは、Fileにlen(b)バイト書きこみます。この関数は書き込んだバイト数と、エラーがあればエラーを返します。Writeは、n != len(b)のときnil以外のエラーを返します。

(*File) WriteAt関数

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

WriteAtは、Fileのバイトオフセットoffからlen(b)バイト書き込みます。この関数は書き込んだバイト数と、エラーがあればエラーを返します。WriteAtは、n != len(b)のときnil以外のエラーを返します。

(*File) WriteString関数

func (file *File) WriteString(s string) (ret int, err Error)

WriteStringは、Writeと似ていますがバイト配列ではなく文字列sの内容を書きこみます。

FileInfo型

FileInfoは、ファイルの情報を記述します。Stat、Fstat、Lstat関数によって返されます。

type FileInfo struct {
    Dev             uint64 // ファイルが置かれているファイルシステムのデバイス番号。
    Ino             uint64 // inode番号。
    Nlink           uint64 // ハードリンク数。
    Mode            uint32 // パーミッションとモードのビット。
    Uid             int    // 所有者のユーザid。
    Gid             int    // 所有者のグループid。
    Rdev            uint64 // スペシャルファイルのデバイスの型
    Size            int64  // 長さ(バイト数)。
    Blksize         int64  // ブロックサイズ(バイト数)。
    Blocks          int64  // ファイルにアロケートされているブロック数。
    Atime_ns        int64  // アクセス時刻。エポックからの経過ナノ秒。
    Mtime_ns        int64  // 変更時刻。エポックからの経過ナノ秒。
    Ctime_ns        int64  // ステータス変更時刻。エポックからの経過ナノ秒。
    Name            string // Openに渡されたファイルの名前。
    FollowedSymlink bool   // この情報を得るためにシンボリックリンクが辿られたか。
}

func Lstat

func Lstat(name string) (fi *FileInfo, err Error)

Lstatは、指定したファイルの情報が記述されたFileInfo構造体と、エラーの時はエラーを返します。ファイルがシンボリックリンクのときは、返されたFileInfoはシンボリックリンクの情報です。Lstatはシンボリックリンク先を参照しません。

func Stat

func Stat(name string) (fi *FileInfo, err Error)

Stat returnsは、指定したファイルの情報が記述されたFileInfo構造体と、エラーの時はエラーを返します。nameに指定したファイル名が有効なシンボリックリンクのときは、返されたFileInfoはシンボリックリンクが指し示す先であり、FileInfo.FollowedSymlinkにtrueがセットされます。ファイル名が無効なシンボリックリンクのときは、返されたFileInfoはシンボリックリンク自身の情報で、FileInfo.FollowedSymlinkにはfalseがセットされます。

func (*FileInfo) IsBlock

func (f *FileInfo) IsBlock() bool

IsBlockは、 FileInfoがブロックスペシャルファイルの情報かどうかを返します。

func (*FileInfo) IsChar

func (f *FileInfo) IsChar() bool

IsCharは、 FileInfoがキャラクタスペシャルファイルの情報かどうかを返します。

func (*FileInfo) IsDirectory

func (f *FileInfo) IsDirectory() bool

IsDirectory は、FileInfoがディレクトリの情報かどうかを返します。

func (*FileInfo) IsFifo

func (f *FileInfo) IsFifo() bool

IsFifoは、 FileInfoがFIFOファイルの情報かどうかを返します。

func (*FileInfo) IsRegular

func (f *FileInfo) IsRegular() bool

IsRegular は、FileInfoが通常のファイルの情報かどうかを返します。

func (*FileInfo) IsSocket

func (f *FileInfo) IsSocket() bool

IsSocket は、FileInfoがソケットの情報かどうかを返します。

func (f *FileInfo) IsSymlink() bool

IsSymlink は、FileInfoがシンボリックリンクの情報かどうかを返します。

func (*FileInfo) Permission

func (f *FileInfo) Permission() uint32

Permission は、ファイルのパーミッションビットを返します。

LinkError型

LinkErrorは、ハードリンク、シンボリックリンク、リネームのシステムコールで発生したエラー情報と、その原因となったパスを記録します。

type LinkError struct {
    Op    string
    Old   string
    New   string
    Error Error
}

(*LinkError) String関数

func (e *LinkError) String() string

PathError型

PathErrorは、エラーと操作、およびその原因となったパスを記録します。

type PathError struct {
    Op    string
    Path  string
    Error Error
}

(*PathError) String関数

func (e *PathError) String() string

SyscallError型

SyscallErrorは、特定のシステムコールで発生したエラーを記録します。

type SyscallError struct {
    Syscall string
    Errno   Errno
}

(*SyscallError) String関数

func (e *SyscallError) String() string

Waitmsg型

Waitmsgは、終了したプロセスについての情報を格納し、Waitから報告されます。

type Waitmsg struct {
    Pid                int             // プロセスのid。
    syscall.WaitStatus                 // システム依存のステータス情報。
    Rusage             *syscall.Rusage // システム依存のリソースの使用情報。
}

Wait関数

func Wait(pid int, options int) (w *Waitmsg, err Error)

Waitは、pidで指定したプロセスの終了または停止を待ち、その状態を格納したWaitmsgと、エラーがあればエラーを返します。options(WNOHANGなど)はWait呼び出しの振舞いに影響します。

(Waitmsg) String関数

func (w Waitmsg) String() string