
The syscall package is locked down and the comment in [1] advises to switch code to use the corresponding package from golang.org/x/sys. Do so and replace usage of package syscall with package golang.org/x/sys/{unix,windows} where applicable. [1] https://github.com/golang/go/blob/master/src/syscall/syscall.go#L21-L24 This will also allow to get updates and fixes for syscall wrappers without having to use a new go version. Errno, Signal and SysProcAttr aren't changed as they haven't been implemented in x/sys/. Stat_t from syscall is used if standard library packages (e.g. os) require it. syscall.ENOTSUP, syscall.SIGKILL and syscall.SIGTERM are used for cross-platform files. Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
29 lines
562 B
Go
29 lines
562 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/containerd/containerd/log"
|
|
"github.com/containerd/containerd/server"
|
|
|
|
"golang.org/x/sys/windows"
|
|
)
|
|
|
|
var (
|
|
defaultConfigPath = filepath.Join(os.Getenv("programfiles"), "containerd", "config.toml")
|
|
handledSignals = []os.Signal{
|
|
windows.SIGTERM,
|
|
windows.SIGINT,
|
|
}
|
|
)
|
|
|
|
func handleSignals(ctx context.Context, signals chan os.Signal, server *server.Server) error {
|
|
for s := range signals {
|
|
log.G(ctx).WithField("signal", s).Debug("received signal")
|
|
server.Stop()
|
|
}
|
|
return nil
|
|
}
|