import socket import multiprocessing def socketpair(): l = socket.socket() l.bind(('localhost', 0)) l.listen(1) s = socket.socket() s.connect(l.getsockname()) a, _ = l.accept() return s, a def bar(*args): s = socket.fromfd(*args) print(s) s.sendall(b'from bar') if __name__ == '__main__': a, b = socketpair() args = (b.fileno(), b.family, b.type, b.proto) p = multiprocessing.Process(target=bar, args=args) p.start() b.close() print(a.recv(100))