<br><br><div><span class="gmail_quote">On 8/9/07, <b class="gmail_sendername">Udo Richter</b> &lt;<a href="mailto:udo_richter@gmx.de">udo_richter@gmx.de</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Petri Helin wrote:<br>&gt; Udo Richter wrote:<br>&gt;&gt; I *think* that these are kill signals received by the child process.<br>&gt;&gt; Which is strange, as the child does an exit immediately. (Unless you&#39;re<br>&gt;&gt; somewhere between 
1.5.1 and 1.5.3 - this changed in 1.5.4)<br>&gt;&gt;<br>&gt;&gt; 6 is SIGABRT, 11 is SIGSEGV and 9 is SIGKILL.<br>&gt;<br>&gt; I use version 1.5.6. I tested with my normal shutdown script and with a<br>&gt; script that just does an &quot;exit 0&quot;. No difference there. Can the script
<br>&gt; itself have any influence on the return value?<br><br>Since 1.5.4, VDR forks into a child that does nothing but fork off a<br>second child, and do an exit(0). The second child exec&#39;s the shutdown<br>script:<br>
<br>VDR<br>&nbsp;&nbsp;+-- Child 1 -&gt; exits<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+-- Child 2 -&gt; runs shutdown<br><br>That way the waitpid quickly returns, the second child becomes orphaned,<br>and no process ends up being a zombie.<br><br>Since the shutdown script runs orphaned, the return value of the script
<br>is not evaluated, nor does anyone wait for the script to terminate.</blockquote><div><br><br>I noticed my vdr-1.5.6 did an emergency shutdown when I had poor signal reception during a recording, which in itself is a fine thing to do... but my &quot;runvdr&quot; script didn&#39;t seem to catch the bad exit code (exit 1) when vdr did that, so VDR never restarted.&nbsp;&nbsp; This code snippet used to work for me, but doesn&#39;t now:
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eval &quot;screen -D -m -S vdr $VDRCMD &amp;&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Remember PID of VDR process<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PID=$!<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Wait for VDR to end or signal to arrive<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wait $PID<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Remember return value of VDR
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RET=$?<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if test $RET -eq 0 -o $RET -eq 2; then exit; fi<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TIMEOFDEATH=$(date +%s)<br><br>so, something is wrong with RET.&nbsp; Does this have to do with the children spawning the exit code?<br><br>Groeten.
<br></div><br></div><br>