50 lines
978 B
Go
50 lines
978 B
Go
// +build !windows
|
|
|
|
package main
|
|
|
|
import (
|
|
"os"
|
|
|
|
"golang.org/x/sys/unix"
|
|
|
|
"github.com/containerd/containerd/log"
|
|
"github.com/containerd/containerd/reaper"
|
|
"github.com/containerd/containerd/sys"
|
|
"github.com/urfave/cli"
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
const (
|
|
defaultConfigPath = "/etc/containerd/config.toml"
|
|
)
|
|
|
|
var (
|
|
handledSignals = []os.Signal{unix.SIGTERM, unix.SIGINT, unix.SIGUSR1, unix.SIGCHLD}
|
|
)
|
|
|
|
func platformInit(context *cli.Context) error {
|
|
if conf.Subreaper {
|
|
log.G(global).Info("setting subreaper...")
|
|
if err := sys.SetSubreaper(1); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func handleSignals(signals chan os.Signal, server *grpc.Server) error {
|
|
for s := range signals {
|
|
log.G(global).WithField("signal", s).Debug("received signal")
|
|
switch s {
|
|
case unix.SIGCHLD:
|
|
if err := reaper.Reap(); err != nil {
|
|
log.G(global).WithError(err).Error("reap containerd processes")
|
|
}
|
|
default:
|
|
server.Stop()
|
|
return nil
|
|
}
|
|
}
|
|
return nil
|
|
}
|