]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: add Cloneflags to Linux SysProcAttr.
authorRémy Oudompheng <oudomphe@phare.normalesup.org>
Sat, 24 Aug 2013 01:34:07 +0000 (03:34 +0200)
committerRémy Oudompheng <oudomphe@phare.normalesup.org>
Sat, 24 Aug 2013 01:34:07 +0000 (03:34 +0200)
Also use clone(2) syscall instead of fork().

Fixes #6214.

R=golang-dev, bradfitz, dave
CC=golang-dev
https://golang.org/cl/13159044

src/pkg/syscall/exec_linux.go

index f332b7069c185147b06cb779d89eee828ca4efe9..81dc80800b7322d56694f67ce645f4b83c399e29 100644 (file)
@@ -20,6 +20,7 @@ type SysProcAttr struct {
        Noctty     bool        // Detach fd 0 from controlling terminal
        Ctty       int         // Controlling TTY fd (Linux only)
        Pdeathsig  Signal      // Signal that the process will get when its parent dies (Linux only)
+       Cloneflags uintptr     // Flags for clone calls (Linux only)
 }
 
 // Implemented in runtime package.
@@ -61,7 +62,7 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr
        // About to call fork.
        // No more allocation or calls of non-assembly functions.
        runtime_BeforeFork()
-       r1, _, err1 = RawSyscall(SYS_FORK, 0, 0, 0)
+       r1, _, err1 = RawSyscall6(SYS_CLONE, uintptr(SIGCHLD)|sys.Cloneflags, 0, 0, 0, 0, 0)
        if err1 != 0 {
                runtime_AfterFork()
                return 0, err1