My goal is to write a script that 1) write something to stdout; then fork into the background, closing the stdout (and stderr, stdin) pipe.

I have found this answer (forking -> setsid -> forking) http://stackoverflow.com/a/3356154

However the standard output of the child is still connected to the terminal. I would like that if we execute a subprocess.checkprocess on this program, only "I would like to see this" is captured and that the program terminates when the parent exits.

#! /usr/bin/python2
import os,sys,time

print "I would like to see this"
pid = os.fork()
if (pid == 0): # The first child.
    # os.chdir("/")
   os.setsid()
   # os.umask(0)
   pid2 = os.fork()
   if (pid2 == 0):  # Second child
     print "I would like not see this"
     time.sleep(5)
   else:
     sys.exit()    #First child exists
else:           # Parent Code
  sys.exit()   # Parent exists
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to