nik <[EMAIL PROTECTED]> wrote:
>  I am having trouble using subprocess popen and stdin/stdout
> 
>  I have the following simple test application written in C++, that just
>  echoes back the stdin. It works fine running from the command line:
> 
>  #include <iostream>
>  #include <time.h>
> 
>  int main (int argc, char * const argv[]) {
>       int currenttemp = 0;
>       int settemp = 0;
>       char* str;
> 
>       while(currenttemp < 500){
>               gets(str);
>               sscanf(str, ">%d", &settemp);
>               currenttemp = settemp;
>               printf("<%d\n", currenttemp++);
>               }
>      return 0;
>  }

You are being caught out by stdio buffering.

You can
a) put a fflush(stdout); after the printf()
b) change the buffering mode of stdin/stdout with setvbuf()
c) use pexpect which will connect to your prog with pseudo-ttys

I recommend c) - subprocess isn't really very good at interactive
conversations between the main process and the subprocess - buffering
will cause you problems. You may in this simple case get it to work
with a) or b) though!

-- 
Nick Craig-Wood <[EMAIL PROTECTED]> -- http://www.craig-wood.com/nick
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to