> > On Thu, Jul 6, 2017 at 10:53 AM, Kalle Sommer Nielsen <ka...@php.net> > wrote: > > 2017-07-06 11:12 GMT+02:00 Martijn van Duren <p...@list.imperialat.at>: > >> I have an (exotic) case where I need to be able to get the > >> filedescriptor from a previously opened stream (via stream_socket_pair) > >> to hand over to the child process, which needs to reexecute. > >> > > > "hand over to a child process" > Child as in pcntl_fork()? Or a subprocess via exec() et. al.? > > For the former, the variable should (I think) carry over. > For the latter, the stream number is going to be a meaningless value > to the subprocess. ((e.g. stdin (fd=0) for the parent is a different > source than stdin for the child, despite being the same number)). > > I'm not sure of your exact use case, but you might be able to use > proc_open to spawn the child and supply the socket in the descriptor > spec which will (I think, iirc) bind the internal socket to a new pipe > between the parent and child. Though it's possible you'll need to > maintain a proxy loop in the parent. > > 40% of the above is guesswork and conjecture, but maybe it'll spawn > the right question.
There's a (I think undocumented) feature that allow transferring sockets to other processes with the socket extension. https://github.com/amphp/aerys/commit/40fae01e4f5f82570a0bc3cb8ebbf1fee36dbb0b Bob implemented that, so maybe he can help you. But what's your exact use case? Regards, Niklas