On Wed, 2004-08-04 at 12:25, Peter Astrand wrote: > > > Why not avoid threads on POSIX systems, and use select instead? My module > > > does, although it does not provide an event-like IO interface. If you get > > > rid of the threads, then you don't need the workaround code for Linux. > > > > Doesn't select() effectively busy-wait on "real" files (pipes and file > > descriptors obtained via open(), as opposed to network sockets) on most > > (all?) UNIXen? At least this has been my finding under Linux. > > Yes, but a solution with threads will have problems as well, since read() > and friends will return EOF rather than block when you reach the end. As I've found, if the end of the pipes in that represent the child's stderr/stdout fds are closed in the parent, a select() reading the "other" ends of these pipes will busywaut (at least on Linux). Other than than, I think this select() would be the absolute right thing on POSIX rather than using threads or polling. Is there a way around this problem or is it just a fact of life? - C
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4