mirror of
https://github.com/containers/podman
synced 2024-10-21 01:34:37 +00:00
ba65301c95
add the ability to create and run containers via the podman-remote client. we now create an intermediate layer from the the create/run cli flags. the intermediate layer can be converted into a createconfig or into a varlink struct. Once transported, the varlink struct can be converted back to an intermediate layer and then to a createconfig. remote terminals are not supported yet. Signed-off-by: baude <bbaude@redhat.com>
37 lines
808 B
Go
37 lines
808 B
Go
package adapter
|
|
|
|
import (
|
|
"os"
|
|
"syscall"
|
|
|
|
"github.com/containers/libpod/libpod"
|
|
"github.com/docker/docker/pkg/signal"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
// ProxySignals ...
|
|
func ProxySignals(ctr *libpod.Container) {
|
|
sigBuffer := make(chan os.Signal, 128)
|
|
signal.CatchAll(sigBuffer)
|
|
|
|
logrus.Debugf("Enabling signal proxying")
|
|
|
|
go func() {
|
|
for s := range sigBuffer {
|
|
// Ignore SIGCHLD and SIGPIPE - these are mostly likely
|
|
// intended for the podman command itself.
|
|
if s == signal.SIGCHLD || s == signal.SIGPIPE {
|
|
continue
|
|
}
|
|
|
|
if err := ctr.Kill(uint(s.(syscall.Signal))); err != nil {
|
|
logrus.Errorf("Error forwarding signal %d to container %s: %v", s, ctr.ID(), err)
|
|
signal.StopCatch(sigBuffer)
|
|
syscall.Kill(syscall.Getpid(), s.(syscall.Signal))
|
|
}
|
|
}
|
|
}()
|
|
|
|
return
|
|
}
|