Hi all, I need to call some programms and catch their stdout and stderr streams. While the Popen class from subprocess handles the call, I get the results of the programm not until the programm finishes. Since the output of the programm is used to generate a progress indicator, I need a way to acces the values written to stdout/stderr as fast as possible.
Beneath is a test which shows what I did
TIA
Rudi
----8<-------8<-------8<-- iodummy.cpp -8<-------8<---
#include <iostream>
#include <unistd.h>
int main()
{
for( int i = 0; i < 10; i++ )
{
std::cerr << i << std::endl;
sleep(2);
}
}
from subprocess import Popen, PIPE
from time import sleep
p = Popen('./iodummy',stdin=PIPE, stdout=PIPE, stderr=PIPE)
sleep(3)
# now I expect '0\n1\n' in stderr, but read() blocks until
# the end of iodummy.
print p.stderr.read()
p.wait()
--
GPG encrypted mails preferred.
GPG verschlüsselte Mails bevorzugt.
---> http://chaosradio.ccc.de/media/ds/ds085.pdf Seite 20 <----
signature.asc
Description: OpenPGP digital signature
-- http://mail.python.org/mailman/listinfo/python-list
