Documentation
¶
Overview ¶
Package reaper contains logic for reaping subprocesses. It is specifically used in the agent to avoid the accumulation of zombie processes.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ForkReap ¶
ForkReap spawns a goroutine that reaps children. In order to avoid complications with spawning `exec.Commands` in the same process that is reaping, we forkexec a child process. This prevents a race between the reaper and an exec.Command waiting for its process to complete. The provided 'pids' channel may be nil if the caller does not care about the reaped children PIDs.
func IsInitProcess ¶
func IsInitProcess() bool
IsInitProcess returns true if the current process's PID is 1.
Types ¶
type Option ¶
type Option func(o *options)
func WithCatchSignals ¶
WithCatchSignals sets the signals that are caught and forwarded to the child process. By default no signals are forwarded.
func WithExecArgs ¶
WithExecArgs specifies the exec arguments for the fork exec call. By default the same arguments as the parent are used as dictated by os.Args. Since ForkReap calls a fork-exec it is the responsibility of the caller to avoid fork-bombing oneself.
func WithPIDCallback ¶
func WithPIDCallback(ch reap.PidCh) Option
WithPIDCallback sets the channel that reaped child process PIDs are pushed onto.