add support to kill container process by pid

This adds support for signalling a container process by pid.

Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>

make Ps more extensible

Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>

ps: windows support

Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
This commit is contained in:
Evan Hazlett
2017-05-09 15:50:02 -04:00
parent fae11b6673
commit ef158f8b5e
14 changed files with 1523 additions and 145 deletions

View File

@@ -83,9 +83,10 @@ func (c *Container) Resume(ctx context.Context) error {
return err
}
func (c *Container) Kill(ctx context.Context, signal uint32, all bool) error {
func (c *Container) Kill(ctx context.Context, signal uint32, pid uint32, all bool) error {
_, err := c.shim.Kill(ctx, &shim.KillRequest{
Signal: signal,
Pid: pid,
All: all,
})
return err
@@ -105,12 +106,32 @@ func (c *Container) Exec(ctx context.Context, opts plugin.ExecOpts) (plugin.Proc
resp, err := c.shim.Exec(ctx, request)
if err != nil {
return nil, err
}
return &Process{
pid: int(resp.Pid),
c: c,
}, nil
}
func (c *Container) Ps(ctx context.Context) ([]uint32, error) {
resp, err := c.shim.Ps(ctx, &shim.PsRequest{
ID: c.id,
})
if err != nil {
return nil, err
}
pids := make([]uint32, 0, len(resp.Ps))
for _, ps := range resp.Ps {
pids = append(pids, ps.Pid)
}
return pids, nil
}
func (c *Container) Pty(ctx context.Context, pid uint32, size plugin.ConsoleSize) error {
_, err := c.shim.Pty(ctx, &shim.PtyRequest{
Pid: pid,