But now I'm not sure about how to read from stdout at progressive intervals. [...]
EVT_PIPEDPROCESS_STDOUT messages
Although reading at regular intervals is possible, it is not advisable. If you did not get a message, then there is nothing to read, so you'll needlessly block.
Granted, passing all data around as messages is not the most efficient way, but that's how
wxExecute works internally, too. To get to your data, simply implement a handler for
EVT_PIPEDPROCESS_STDOUT (and optionally
EVT_PIPEDPROCESS_STDERR, if you want to listen what might arrive there). To know when the child process has exited, listen to
EVT_PIPEDPROCESS_TERMINATED.
Note that due to the generally dismal performance of wxExecute, a replacement is in work (actually should be finished long ago). However, while creating a process may be slightly different, the method of getting output via messages will stay available (though not the only option).