Linux – 正确保留一个subprocess的随机TCP端口

我有一个第三方脚本,在给定的端口上启动服务器。 我不在乎我在哪个端口启动它,而且我也不想占用任何端口,所以我一直在做的是(原谅我的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, ...) 

我想上面在技术上是错误的,因为我认为通过closures星历服务器,我失去了对这个星历端口的所有权,我并不保证那个端口在产卵部分仍然可用。

所以我的问题是,我可以做到这一点,并为subprocess保留一个随机端口?

我意识到我只能将0作为端口CLIparameter passing给subprocess,然后检查它正在监听的端口,但是,只有当subprocess只监听一个端口时才能工作,否则我不会知道端口对应于作为CLI端口parameter passing的0。