mirror of
https://github.com/rwinkhart/sys.git
synced 2026-09-04 08:07:19 -04:00
unix: add Exec call
The syscall execve has no wrapper in this library, which it seems like it should - Ian seemed to concur in CL 72550. Add a docstring and an example, because I always get confused about how to invoke the syscall. Change-Id: I6100bbbf4ace9e3e341bf186a04cc03301da9aea Reviewed-on: https://go-review.googlesource.com/101282 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
@@ -0,0 +1,16 @@
|
|||||||
|
// Copyright 2018 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.
|
||||||
|
|
||||||
|
package unix
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ExampleExec() {
|
||||||
|
err := syscall.Exec("/bin/ls", []string{"ls", "-al"}, os.Environ())
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
@@ -305,3 +305,12 @@ func SetNonblock(fd int, nonblocking bool) (err error) {
|
|||||||
_, err = fcntl(fd, F_SETFL, flag)
|
_, err = fcntl(fd, F_SETFL, flag)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Exec calls execve(2), which replaces the calling executable in the process
|
||||||
|
// tree. argv0 should be the full path to an executable ("/bin/ls") and the
|
||||||
|
// executable name should also be the first argument in argv (["ls", "-l"]).
|
||||||
|
// envv are the environment variables that should be passed to the new
|
||||||
|
// process (["USER=go", "PWD=/tmp"]).
|
||||||
|
func Exec(argv0 string, argv []string, envv []string) error {
|
||||||
|
return syscall.Exec(argv0, argv, envv)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user