In order to pass sockets between existing processes you need to use sendmsg — Or libancillary which abstracts the whole thing.