sockets - Linux -- properly reserve a random TCP port for a child process -


i have 3rd-party script starts server on given port. don't care port start at, , don't want hog ports, i've been doing (pardon ruby):

 ephemereal_server = tcpserver.new('localhost', 0)   port = ephemereal_server.local_address.ip_port.to_s   ephemereal_server.close   return port   #...   spawn("script", "--port", port, ...) 

i suppose above technically wrong because suppose closing ephemereal server, lose ownership of ephemereal port, , i'm not guaranteed that port still available @ spawning part.

so question is, can correctly , reserve random port child process?

i realize can pass 0 port cli argument child process , check port it's listening on, however, work if child process listen on 1 port, or else won't know port corresponds 0 passed cli port argument.


Comments