import socket, select, os, time, stat SockPath = "/tmp/testsock.sock" if os.fork() != 0: # Parent - server: try: if stat.S_ISSOCK(os.stat(SockPath)[stat.ST_MODE]): os.unlink(SockPath) else: raise Exception, "%s exists but is not a socket" % SockPath except OSError: pass # ok, file does not exist s = socket.socket(socket.AF_UNIX, socket.SOCK_SEQPACKET) s.setblocking(0) s.bind(SockPath) s.listen(1) p = select.poll() p.register(s, select.POLLIN) print "Server started" while True: result = p.poll() if result is not None: for fd, event in result: if fd == s.fileno(): s.accept() # and discard print "Accepted" else: # Child time.sleep(1) s = socket.socket(socket.AF_UNIX, socket.SOCK_SEQPACKET) s.connect(SockPath) del s print "Child connected ok, exitting"