On 04/02/08 10:42 PM, "Eric Brunson" <[EMAIL PROTECTED]> wrote:
> dave selby wrote: >> Hi all, >> >> I am not sure if this is a Python or bash issue :). >> >> In bash if I execute 'motion' with the following ... >> >> [EMAIL PROTECTED]:~/.kde/share/apps/kmotion$ motion &> /dev/null & >> [1] 10734 >> [EMAIL PROTECTED]:~/.kde/share/apps/kmotion$ >> >> I get what I expect, a background job, however if I execute it from >> Python with an os.system ... >> >> os.system('motion &> /dev/null &') >> > > This happens because &> and & are shell constructs, they are bash > specific shell syntax for "redirect stderr and stdout" and "put this job > in the background". But os.system simply calls the OS's "system(3)" > call, which under linux calls "/bin/sh". If you read the docs for bash, > calling it as "sh" results in POSIX compliance mode and falls back to > Bourne shell's less rich syntax, so it doesn't understand the "&>" > construct. If I had to guess at the parsing, I imagine it runs the > "motion &" as one process in the background, then "> /dev/null &" as a > second. > > Long story short, look at this page: > http://docs.python.org/lib/node537.html > >> I get tons of output to the BASH shell ... >> >> [0] Processing thread 0 - config file /etc/motion/motion.conf >> [0] Processing config file /etc/motion/motion.1.conf >> [0] Processing config file /etc/motion/motion.2.conf >> [1] Thread is from /etc/motion/motion.1.conf >> [2] Thread is from /etc/motion/motion.2.conf >> [1] Thread started >> [2] Thread started >> [1] File of type 2 saved to: /var/lib/motion/20080203/01/tmp/175253.jpg >> ...etc ... >> >> I just can't work out why this is happening & how to stop it ?. Any ideas ? >> >> Cheers >> >> Dave >> >> Try os.system('bash motion &> /dev/null &') _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor