// Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Process etc. package os import ( "internal/testlog" "runtime" "syscall" ) // Args hold the command-line arguments, starting with the program name. var Args []string func init() { if runtime.GOOS == "windows" { // Initialized in exec_windows.go. return } Args = runtime_args() } func runtime_args() []string // in package runtime // Getuid returns the numeric user id of the caller. // // On Windows, it returns -1. func Getuid() int { return syscall.Getuid() } // Geteuid returns the numeric effective user id of the caller. // // On Windows, it returns -1. func Geteuid() int { return syscall.Geteuid() } // Getgid returns the numeric group id of the caller. // // On Windows, it returns -1. func Getgid() int { return syscall.Getgid() } // Getegid returns the numeric effective group id of the caller. // // On Windows, it returns -1. func Getegid() int { return syscall.Getegid() } // Getgroups returns a list of the numeric ids of groups that the caller belongs to. // // On Windows, it returns syscall.EWINDOWS. See the os/user package // for a possible alternative. func Getgroups() ([]int, error) { gids, e := syscall.Getgroups() return gids, NewSyscallError("getgroups", e) } // 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. // // For portability, the status code should be in the range [0, 125]. func Exit(code int) { if code == 0 && testlog.PanicOnExit0() { // We were told to panic on calls to os.Exit(0). // This is used to fail tests that make an early // unexpected call to os.Exit(0). panic("unexpected call to os.Exit(0) during test") } // Inform the runtime that os.Exit is being called. If -race is // enabled, this will give race detector a chance to fail the // program (racy programs do not have the right to finish // successfully). If coverage is enabled, then this call will // enable us to write out a coverage data file. runtime_beforeExit(code) syscall.Exit(code) } func runtime_beforeExit(exitCode int) // implemented in runtime