What is the best way for a Python process (presumed to be a script run by the interpreter binary, not embedded in some other program) to restart itself? This is what I've been trying:
import __main__ for path in sys.path: path += '/' + __main__.__file__ if os.access(path, os.F_OK): break else: raise Exception('WTF?') #Then, something like... os.execl(sys.executable, sys.executable, path, *sys.argv[1:]) BUT! This is a multi-threaded program, and at least on OS X, trying to exec*() in a threaded process raises OSError [Errno 45] Operation not supported. So I tried having it fork, and having the child process wait for the parent process to die (in various ways) and then exec*(). That seemed to work, sort of, but the child would not be attached to the original terminal, which is a must. Any ideas? -- http://mail.python.org/mailman/listinfo/python-list