dotcloud/docker

View on GitHub
pkg/reexec/command_linux.go

Summary

Maintainability
A
0 mins
Test Coverage
package reexec

import (
    "os/exec"
    "syscall"
)

// Command returns an [*exec.Cmd] which has Path as current binary which,
// on Linux, is set to the in-memory version (/proc/self/exe) of the current
// binary, it is thus safe to delete or replace the on-disk binary (os.Args[0]).
//
// On Linux, the Pdeathsig of [*exec.Cmd.SysProcAttr] is set to SIGTERM.
// This signal will be sent to the process when the OS thread which created
// the process dies.
//
// It is the caller's responsibility to ensure that the creating thread is
// not terminated prematurely. See https://go.dev/issue/27505 for more details.
func Command(args ...string) *exec.Cmd {
    return &exec.Cmd{
        Path: Self(),
        Args: args,
        SysProcAttr: &syscall.SysProcAttr{
            Pdeathsig: syscall.SIGTERM,
        },
    }
}