[Zope3-checkins] SVN: zdaemon/trunk/ add a "transcript" setting to specify a file that all program output is

Fred L. Drake, Jr. fdrake at gmail.com
Thu Aug 5 14:58:56 EDT 2004


Log message for revision 26920:
  add a "transcript" setting to specify a file that all program output is
  written to in daemon mode
  (addresses Zope 3 issue 245)
  


Changed:
  U   zdaemon/trunk/component.xml
  U   zdaemon/trunk/zdrun.py


-=-
Modified: zdaemon/trunk/component.xml
===================================================================
--- zdaemon/trunk/component.xml	2004-08-05 18:57:13 UTC (rev 26919)
+++ zdaemon/trunk/component.xml	2004-08-05 18:58:56 UTC (rev 26920)
@@ -250,6 +250,18 @@
       </description>
     </key>
 
+    <key name="transcript" datatype="existing-dirpath"
+         required="no">
+      <description>
+        The name of a file in which a transcript of all output from
+        the command being run will be written to when daemonized.
+
+        If not specified, output from the command will be discarded.
+
+        This only takes effect when the "daemon" option is enabled.
+      </description>
+    </key>
+
     <key name="prompt" datatype="string"
          required="no">
        <description>

Modified: zdaemon/trunk/zdrun.py
===================================================================
--- zdaemon/trunk/zdrun.py	2004-08-05 18:57:13 UTC (rev 26919)
+++ zdaemon/trunk/zdrun.py	2004-08-05 18:58:56 UTC (rev 26920)
@@ -26,6 +26,7 @@
 -s/--socket-name SOCKET -- Unix socket name for client (default "zdsock")
 -u/--user USER -- run as this user (or numeric uid)
 -m/--umask UMASK -- use this umask for daemon subprocess (default is 022)
+-t/--transcript FILE -- transript of output from daemon-mode program
 -x/--exit-codes LIST -- list of fatal exit codes (default "0,2")
 -z/--directory DIRECTORY -- directory to chdir to when using -d (default off)
 program [program-arguments] -- an arbitrary application to run
@@ -97,6 +98,8 @@
         self.add("schemafile", short="S:", long="schema=",
                  default="schema.xml",
                  handler=self.set_schemafile)
+        self.add("transcript", "runner.transcript", "t:", "transcript=",
+                 default="/dev/null")
 
     def set_schemafile(self, file):
         self.schemafile = file
@@ -348,7 +351,7 @@
         # parent terminal window to escape from a logtail command.
         # To disassociate ourselves from our parent's session group we use
         # os.setsid.  It means "set session id", which has the effect of
-        # disassociating a process from its current session and process group
+        # disassociating a process from is current session and process group
         # and setting itself up as a new session leader.
         #
         # Unfortunately we cannot call setsid if we're already a session group
@@ -380,9 +383,9 @@
         os.close(0)
         sys.stdin = sys.__stdin__ = open("/dev/null")
         os.close(1)
-        sys.stdout = sys.__stdout__ = open("/dev/null", "w")
+        sys.stdout = sys.__stdout__ = open(self.options.transcript, "a", 0)
         os.close(2)
-        sys.stderr = sys.__stderr__ = open("/dev/null", "w")
+        sys.stderr = sys.__stderr__ = open(self.options.transcript, "a", 0)
         os.setsid()
         os.umask(self.options.umask)
         # XXX Stevens, in his Advanced Unix book, section 13.3 (page



More information about the Zope3-Checkins mailing list