github.com/slene/docker@v1.8.0-rc1/daemon/kill.go (about) 1 package daemon 2 3 import ( 4 "fmt" 5 "syscall" 6 ) 7 8 // ContainerKill send signal to the container 9 // If no signal is given (sig 0), then Kill with SIGKILL and wait 10 // for the container to exit. 11 // If a signal is given, then just send it to the container and return. 12 func (daemon *Daemon) ContainerKill(name string, sig uint64) error { 13 container, err := daemon.Get(name) 14 if err != nil { 15 return err 16 } 17 18 // If no signal is passed, or SIGKILL, perform regular Kill (SIGKILL + wait()) 19 if sig == 0 || syscall.Signal(sig) == syscall.SIGKILL { 20 if err := container.Kill(); err != nil { 21 return fmt.Errorf("Cannot kill container %s: %s", name, err) 22 } 23 } else { 24 // Otherwise, just send the requested signal 25 if err := container.KillSig(int(sig)); err != nil { 26 return fmt.Errorf("Cannot kill container %s: %s", name, err) 27 } 28 } 29 return nil 30 }