while((sv = select(pipe[0]+1, set, NULL, NULL, &tval)) > 0) { LLOG("Read() -> select"); char buffer[1024]; int done = read(pipe[0], buffer, sizeof(buffer)); LLOG("Read(), read -> " << done); if(done > 0) res[wp].Cat(buffer, done); else if (done == 0) { close(pipe[0]); pipe[0] = -1; } }
int LocalProcess::Finish(String& out) { out.Clear(); while(IsRunning()) { out.Cat(Get()); Sleep(1); // p.Wait would be much better here! } for(;;) { String h = Get(); if(h.IsVoid()) break; out.Cat(h); } return GetExitCode(); }