On Fri, Nov 8, 2024 at 2:18 AM Peter Galbavy <pe...@wonderland.org> 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


Do you know what part of your program is opening those file
descriptors?  In particular, is it Go code or is it in some other
language like C?  If in Go, does it use calls like os.Open or does it
use syscall.Open?  I ask because calls like os.Open are careful to set
the O_CLOEXEC flag that causes the descriptor to be closed when
exec-ing a new process.  Other languages, or syscall.Open, may not be
so careful.

Ian

-- 
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 golang-nuts+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/golang-nuts/CAOyqgcVaM0zvKFBFSh7V7%3D9__0y1SNpN8%2B2D_sLBrEApgT3a_g%40mail.gmail.com.

Reply via email to