aboutsummaryrefslogtreecommitdiffhomepage
path: root/container/container.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-07-29 02:38:17 +0900
committerOphestra <cat@gensokyo.uk>2025-07-29 02:38:17 +0900
commit940ee00ffee9208a244a99ff085a981c1af1d7c4 (patch)
treeb57465c48ccfb0eb594c84221aaf7bfd4aa6f444 /container/container.go
parentb43d10468039a07ada412dcab83e8e074ab9ef46 (diff)
container/init: configurable lingering process wait delay
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'container/container.go')
-rw-r--r--container/container.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/container/container.go b/container/container.go
index 09360df5..7f2d9b97 100644
--- a/container/container.go
+++ b/container/container.go
@@ -68,6 +68,8 @@ type (
Args []string
// Deliver SIGINT to the initial process on context cancellation.
ForwardCancel bool
+ // time to wait for linger processes after death of initial process
+ AdoptWaitDelay time.Duration
// Mapped Uid in user namespace.
Uid int
@@ -128,6 +130,14 @@ func (p *Container) Start() error {
p.SeccompPresets |= seccomp.PresetDenyTTY
}
+ if p.AdoptWaitDelay == 0 {
+ p.AdoptWaitDelay = 5 * time.Second
+ }
+ // to allow disabling this behaviour
+ if p.AdoptWaitDelay < 0 {
+ p.AdoptWaitDelay = 0
+ }
+
p.cmd = exec.CommandContext(ctx, MustExecutable())
p.cmd.Args = []string{initName}
p.cmd.Stdin, p.cmd.Stdout, p.cmd.Stderr = p.Stdin, p.Stdout, p.Stderr