title: Catch stderr in subprocess.check_call without using subprocess.PIPE
body: <p>I'd like to do the following:</p>
  
  <ul>
  <li>shell out to another executable from Python, using <code>subprocess.check_call</code></li>
  <li>catch the stderr of the child process, if there is any</li>
  <li>add the stderr output to the CalledProcessError exception output from the parent process.</li>
  </ul>
  
  <p>In theory this is simple. The <code>check_call</code> function signature contains a kwarg for <code>stderr</code>:</p>
  
  <pre><code>subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
  </code></pre>
  
  <p>However, immediately below that the <a href="http://docs.python.org/2/library/subprocess.html" rel="nofollow">documentation</a> contains the following warning:</p>
  
  <blockquote>
    <p><strong>Note</strong>: Do not use <code>stdout=PIPE</code> or <code>stderr=PIPE</code> with this function. As the pipes are not being read in the current process, the child process may block if it generates enough output to a pipe to fill up the OS pipe buffer.</p>
  </blockquote>
  
  <p>The problem is that pretty much every example I can find for getting stderr from the child process mentions using <code>subprocess.PIPE</code> to capture that output.</p>
  
  <p>How can you capture stderr from the child process without using <code>subprocess.PIPE</code>?</p>