libgo: update to go1.9
[official-gcc.git] / libgo / go / os / proc.go
blob804128a1da4bf5ae2932f26bbd36671fa12be098
1 // Copyright 2009 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
5 // Process etc.
7 package os
9 import (
10 "runtime"
11 "syscall"
14 // Args hold the command-line arguments, starting with the program name.
15 var Args []string
17 func init() {
18 if runtime.GOOS == "windows" {
19 // Initialized in exec_windows.go.
20 return
22 Args = runtime_args()
25 func runtime_args() []string // in package runtime
27 // Getuid returns the numeric user id of the caller.
29 // On Windows, it returns -1.
30 func Getuid() int { return syscall.Getuid() }
32 // Geteuid returns the numeric effective user id of the caller.
34 // On Windows, it returns -1.
35 func Geteuid() int { return syscall.Geteuid() }
37 // Getgid returns the numeric group id of the caller.
39 // On Windows, it returns -1.
40 func Getgid() int { return syscall.Getgid() }
42 // Getegid returns the numeric effective group id of the caller.
44 // On Windows, it returns -1.
45 func Getegid() int { return syscall.Getegid() }
47 // Getgroups returns a list of the numeric ids of groups that the caller belongs to.
49 // On Windows, it returns syscall.EWINDOWS. See the os/user package
50 // for a possible alternative.
51 func Getgroups() ([]int, error) {
52 gids, e := syscall.Getgroups()
53 return gids, NewSyscallError("getgroups", e)
56 // Exit causes the current program to exit with the given status code.
57 // Conventionally, code zero indicates success, non-zero an error.
58 // The program terminates immediately; deferred functions are not run.
59 func Exit(code int) {
60 if code == 0 {
61 // Give race detector a chance to fail the program.
62 // Racy programs do not have the right to finish successfully.
63 runtime_beforeExit()
65 syscall.Exit(code)
68 func runtime_beforeExit() // implemented in runtime