title: Broken Pipe from subprocess.Popen.communciate() with stdin
body: <p>I'm having a strange issue when using subprocess.Popen.communicate().  For background, I want to execute an application from my python script.  When I run the program from the command line, I do it like this (UNIX):</p>
  
  <pre>
  $ echo "input text" | /path/to/myapp
  </pre>
  
  <p>From my script, I also want to pipe the input into the application.  So, I tried the following.  But I get a "broken pipe" error when I try to send the input with communicate():</p>
  
  <pre>
  >>> cmd = ['/path/to/myapp']
  >>> p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE)
  >>> out,err = p.communicate('input text')
  Traceback (most recent call last):
    File "", line 1, in 
    File "/usr/lib/python2.5/subprocess.py", line 670, in communicate
      return self._communicate(input)
    File "/usr/lib/python2.5/subprocess.py", line 1223, in _communicate
      bytes_written = self._write_no_intr(self.stdin.fileno(), buffer(input, input_offset, 512))
    File "/usr/lib/python2.5/subprocess.py", line 1003, in _write_no_intr
      return os.write(fd, s)
  OSError: [Errno 32] Broken pipe
  </pre>
  
  <p>To make matters stranger, if I leave out the input data, I don't get any errors.  However, this isn't really a good workaround because the application needs input to work.</p>
  
  <pre>
  >>> p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE)
  >>> out,err = p.communicate()
  >>> print out
  [error from myapp regarding lack of input]
  </pre>
  
  <p>Any idea what I'm missing?</p>