Having added this, the child process now does not inherit those FDs:
// mark all non-std fds unshared
cmd.ExtraFiles = []*os.File{}
// un-inherit all FDs explicitly
fds, err := os.ReadDir("/proc/self/fd")
if err != nil {
return
}
var intfds []int
for _, f := range fds {
if i, err := strconv.Atoi(f.Name()); err == nil {
intfds = append(intfds, i)
}
}
maxfd := slices.Max(intfds)
for i := 0; i < maxfd-3; i++ {
cmd.ExtraFiles = append(cmd.ExtraFiles, nil)
}
Is this a bug (known or otherwise) or am I just doing the original
cmd.Start() wrong?
On Friday 8 November 2024 at 10:18:27 UTC Peter Galbavy wrote:
> I have a command line manager tool that builds the starting environment
> for a process and calls cmd.Start().
>
> The code sets (doesn't need to as it starts as nil, but does to be extra
> explicit) cmd.ExtraFiles = nil, but even then I seem to inherit a bunch of
> FDs from the CLI - I noticed because the oddities belong to VSCode terminal
> (cmd dump first, just before to call to cmd.Start()):
>
> 2024-11-08T10:08:09Z DEBUG: pkg/host/local.go:221 host.(*Local).Start() >
> cordial: cmd:
> &exec.Cmd{Path:"/home/peter/geneos/packages/gateway/active_prod/gateway2.linux_64",
>
> Args:[]string{"/home/peter/geneos/packages/gateway/active_prod/gateway2.linux_64",
>
> "Demo Gateway", "-gateway-name", "Demo Gateway", "-resources-dir",
> "/home/peter/geneos/packages/gateway/active_prod/resources", "-log",
> "/home/peter/geneos/gateway/gateways/Demo Gateway/gateway.log", "-setup",
> "/home/peter/geneos/gateway/gateways/Demo Gateway/gateway.setup.xml",
> "-licd-host", "localhost", "-ssl-certificate",
> "/home/peter/geneos/gateway/gateways/Demo Gateway/gateway.pem",
> "-ssl-certificate-key", "/home/peter/geneos/gateway/gateways/Demo
> Gateway/gateway.key", "-ssl-certificate-chain",
> "/home/peter/geneos/gateway/gateways/Demo Gateway/chain.pem",
> "-licd-secure", "-key-file",
> "/home/peter/geneos/gateway/gateway_shared/keyfiles/06761949.aes",
> "-previous-key-file",
> "/home/peter/geneos/gateway/gateway_shared/keyfiles/740424C5.aes"},
> Env:[]string{"TEST2=memory", "TEST=mytest2",
> "LD_LIBRARY_PATH=/home/peter/geneos/packages/gateway/active_prod/lib64:/usr/lib64"},
>
> Dir:"/home/peter/geneos/gateway/gateways/Demo Gateway",
> Stdin:io.Reader(nil), Stdout:(*os.File)(0xc000166288),
> Stderr:(*os.File)(0xc000166288), ExtraFiles:[]*os.File(nil),
> SysProcAttr:(*syscall.SysProcAttr)(0xc000000840),
> Process:(*os.Process)(nil), ProcessState:(*os.ProcessState)(nil),
> ctx:context.Context(nil), Err:error(nil), Cancel:(func() error)(nil),
> WaitDelay:0, childIOFiles:[]io.Closer(nil), parentIOPipes:[]io.Closer(nil),
> goroutine:[]func() error(nil), goroutineErr:(<-chan error)(nil),
> ctxResult:(<-chan exec.ctxResult)(nil), createdByStack:[]uint8(nil),
> lookPathErr:error(nil), cachedLookExtensions:struct { in string; out string
> }{in:"", out:""}}
> gateway "Demo Gateway" started with PID 55903
>
> FDs 19 and above seem to be inherited:
>
> peter@thinkpad:~/cordial/tools/geneos$ lsof -p 55903
> COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
> gateway2. 55903 peter cwd DIR 259,2 4096 22284207
> /home/peter/geneos/gateway/gateways/Demo Gateway
> gateway2. 55903 peter rtd DIR 259,2 4096 2 /
> ...
> gateway2. 55903 peter 19w REG 259,2 6014 22857682
> /home/peter/.vscode-server/data/logs/20241108T084719/remoteagent.log
> gateway2. 55903 peter 20w REG 259,2 2000 22857683
> /home/peter/.vscode-server/data/logs/20241108T084719/ptyhost.log
> gateway2. 55903 peter 21u CHR 5,2 0t0 91 /dev/ptmx
> gateway2. 55903 peter 22u CHR 5,2 0t0 91 /dev/ptmx
> gateway2. 55903 peter 23u CHR 5,2 0t0 91 /dev/ptmx
>
> Am I missing anything?
>
> Code (which is far from clean, sorry) is scattered around
> https://github.com/ITRS-Group/cordial/blob/main/pkg/host/local.go#L214
>
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/golang-nuts/cf8f3eeb-2f20-413c-a28e-29896403842cn%40googlegroups.com.