How to spawn a new independent process in Python How to spawn a new independent process in Python python python

How to spawn a new independent process in Python


Try prepending "nohup" to script.sh. You'll probably need to decide what to do with stdout and stderr; I just drop it in the example.

import osfrom subprocess import Popendevnull = open(os.devnull, 'wb') # Use this in Python < 3.3# Python >= 3.3 has subprocess.DEVNULLPopen(['nohup', 'script.sh'], stdout=devnull, stderr=devnull)


Just use subprocess.Popen. The following works OK for me on Windows XP / Windows 7 and Python 2.5.4, 2.6.6, and 2.7.4. And after being converted with py2exe - not tried 3.3 - it comes from the need to delete expired test software on the clients machine.

import osimport subprocessimport sysfrom tempfile import gettempdirdef ExitAndDestroy(ProgPath):    """ Exit and destroy """    absp = os.path.abspath(ProgPath)    fn = os.path.join(gettempdir(), 'SelfDestruct.bat')    script_lines = [        '@rem Self Destruct Script',        '@echo ERROR - Attempting to run expired test only software',        '@pause',        '@del /F /Q %s' % (absp),        '@echo Deleted Offending File!',        '@del /F /Q %s\n' % (fn),        #'@exit\n',        ]    bf = open(fn, 'wt')    bf.write('\n'.join(script_lines))    bf.flush()    bf.close()    p = subprocess.Popen([fn], shell=False)    sys.exit(-1)if __name__ == "__main__":   ExitAndDestroy(sys.argv[0])