The could be calling fork() as in the system call - which copies all file 
descriptors but I didn’t think Go processes could fork.

Seems you would need to remap stdin and stdout in the fork to do anything 
useful. 

This sounds very PHP - what goes around comes around. 

> On Mar 1, 2024, at 8:01 PM, Ian Lance Taylor <i...@golang.org> wrote:
> 
> On Fri, Mar 1, 2024 at 5:57 PM Jeff Stein <jeffst...@gmail.com> wrote:
>> 
>> I'm struggling to understand if I'm able to do something.
>> 
>> 
>> In my very odd use case we are writing a websever that handles connections 
>> via a forked process.
>> 
>> I have a listener process that listens for TCP connections.
>> 
>> So each net.Conn that comes in we pull off its file descriptor:
>> 
>> fd, err := conn.(*net.TCPConn).File()
>> 
>> duplicate that file descriptor and then fork off a process passing in that 
>> file descriptor.
>> 
>> In my forked handler I'll reconstruct the HTTP connection and "do stuff".
>> 
>> The concern I'm having is that it appears when I fork a process I inherit 
>> all of the parent file descriptors so if I have say 5 incoming connections 
>> and then I fork my child process technically could write to a different 
>> connection.
>> 
>> I've played around with the various options:
>> 
>> cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: false,}
>> 
>> and using cmd.ExtraFiles
>> 
>> No matter what I do I seem unable to limit the sub process to ONLY using the 
>> specific File Descriptor I want it to have access to.
>> 
>> I believe this is doable in C - but I'm not sure if I can do this in GoLang 
>> as-is without mods .
> 
> What you are describing shouldn't happen.  A child process should only
> get the file descriptors explicitly passed via the os/exec.Cmd fields
> Stdin, Stdout, Stderr, and ExtraFiles.  So tell us more: OS and
> version of Go, and what is showing you that all file descriptors are
> being passed down to the child.
> 
> 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 on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/CAOyqgcUb27YBCyE52QisHLyB9XPPpEycMxt4FrFJogGsFMiemQ%40mail.gmail.com.

-- 
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 on the web visit 
https://groups.google.com/d/msgid/golang-nuts/C7B700A5-F5BE-45D2-AA8B-E8A504627408%40ix.netcom.com.

Reply via email to