(yes, the above code is dumb and I have squashed it, to just keep the max 
fd without a slice ...  it just started out with something else)

On Friday 8 November 2024 at 10:39:12 UTC Peter Galbavy wrote:

> 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 golang-nuts+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/golang-nuts/3023d039-780e-4d7a-995c-a4d65ea30922n%40googlegroups.com.

Reply via email to