Message54515
Unless you use PeekNamedPipe on Windows, there is no guarantee that the pipe will return *any* data until the process ends, even if you say pipe.read(1) and there is 1k of data already sent.
Note that the two async reading methods that I provide (recv() and recv_err()) take a 'maximum bytes' argument. Just like I have written a 'send_all()' utility function, I (or you) can easily write a 'recv_exact()' utility function that receives an exact number of bytes before returning. That functionality would be more or less required for one of the expected use-cases I specify in the recipe, "writing a multi-platform 'expect' module".
Stick with async calls (with the utility recv_exact()) until you need to use the .communicate() method. |
|
Date |
User |
Action |
Args |
2007-08-23 16:10:56 | admin | link | issue1191964 messages |
2007-08-23 16:10:56 | admin | create | |
|