- 开发无止境 -
Data: 2017-07-23 17:00:47Form: JournalClick: 20
Go语言的os包中提供了操作系统函数的接口,是一个比较重要的包。顾名思义,os包的作用主要是在服务器上进行系统的基本操作,如文件操作、目录操作、执行命令、信号与中断、进程、系统状态等等。
函数列表:
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 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() (pwd 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 Lchown(name string, uid, gid int) error
func Link(oldname, newname string) error
func Mkdir(name string, perm FileMode) error
func MkdirAll(path string, perm FileMode) error
func NewSyscallError(syscall string, err error) error
func Readlink(name string) (string, error)
func Remove(name string) error
func RemoveAll(path string) error
func Rename(oldname, newname 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 Create(name string) (file *File, err error)
func NewFile(fd uintptr, name string) *File
func Open(name string) (file *File, err error)
func OpenFile(name string, flag int, perm FileMode) (file *File, err error)
func Pipe() (r *File, w *File, err 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) (fi []FileInfo, err 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) Stat() (fi FileInfo, err error)
func (f *File) Sync() (err 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) (ret int, err error)
func Lstat(name string) (fi FileInfo, err error)
func Stat(name string) (fi FileInfo, err error)
func (m FileMode) IsDir() bool
func (m FileMode) Perm() FileMode
func (m FileMode) String() string
func (e *LinkError) Error() string
func (e *PathError) Error() string
func FindProcess(pid int) (p *Process, err 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)
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
func (e *SyscallError) Error() string
func main() {
chdirTest()
chmodTest()
chownTest()
chtimesTest()
}
func chtimesTest() {
fi, err := os.Stat("Hello.go")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("Hello.go: atime=%+v, mtime=%v\n", fi.Sys().(*syscall.Stat_t).Atimespec, fi.ModTime())
err = os.Chtimes("Hello.go", time.Now(), time.Now())
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fi, err = os.Stat("Hello.go")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("Now Hello.go: atime=%+v, mtime=%v\n", fi.Sys().(*syscall.Stat_t).Atimespec, fi.ModTime())
}
func chownTest() {
fi, err := os.Stat("a.txt")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("a.txt: uid=%d, gid=%d\n", fi.Sys().(*syscall.Stat_t).Uid, fi.Sys().(*syscall.Stat_t).Gid)
//a.txt: uid=501, gid=20
err = os.Chown("a.txt", 99, 99) //nobody, nobody
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fi, err = os.Stat("a.txt")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("Now a.txt: uid=%d, gid=%d\n", fi.Sys().(*syscall.Stat_t).Uid, fi.Sys().(*syscall.Stat_t).Gid)
//Now a.txt: uid=99, gid=99
}
func chmodTest() {
fi, err := os.Stat("a.txt")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("a.txt's mode is: %s(%o)\n", fi.Mode(), fi.Mode()&0777)
//a.txt's mode is: -rw-r--r--(644)
err = os.Chmod("a.txt", 0777)
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fi, err = os.Stat("a.txt")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("Now a.txt's mode is: %s(%o)\n", fi.Mode(), fi.Mode()&0777)
//Now a.txt's mode is: -rwxrwxrwx(777)
}
func chdirTest() {
pwd, err := os.Getwd()
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("The current directory is: %s\n", pwd) //The current directory is: /Users/acton_zhang/go/gobook
if err = os.Chdir("go-study"); err != nil {
fmt.Printf("Error: %s\n", err) //Error: chdir go-study: no such file or directory
return
}
pwd, err = os.Getwd()
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("Now the current directory is: %s\n", pwd)
}
func main() {
fileChdirTest()
fileChmod()
fileChown()
}
func fileChown() {
fi, err := os.Stat("Hello.go")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("Hello.go: uid=%d, gid=%d\n", fi.Sys().(*syscall.Stat_t).Uid, fi.Sys().(*syscall.Stat_t).Gid)
f, _ := os.Open("Hello.go")
err = f.Chown(99, 99) //nobody, nobody
if err != nil {
fmt.Printf("Error: %s\n", err)
}
f.Close()
fi, err = os.Stat("Hello.go")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("Now Hello.go: uid=%d, gid=%d\n", fi.Sys().(*syscall.Stat_t).Uid, fi.Sys().(*syscall.Stat_t).Gid)
}
func fileChmod() {
fi, err := os.Stat("Hello.go")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("Hello.go's mode is: %s(%o)\n", fi.Mode(), fi.Mode()&0777)
f, _ := os.Open("Hello.go")
err = f.Chmod(0777)
if err != nil {
fmt.Printf("Error: %s\n", err)
}
f.Close()
fi, err = os.Stat("Hello.go")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("Now Hello.go's mode is: %s(%o)\n", fi.Mode(), fi.Mode()&0777)
}
func fileChdirTest() {
pwd, err := os.Getwd()
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("The current directory is: %s\n", pwd)
f, _ := os.Open("World")
if err = f.Chdir(); err != nil {
fmt.Printf("Error: %s\n", err)
}
pwd, err = os.Getwd()
if err != nil {
fmt.Printf("Error: %s\n", err)
return
<