Igen, select() es/vagy poll() az tud kezelni timeout-ot, azzal nincs gond. Csak ha kifut a cucc az ido"bo"l es le akarod lo"ni, akkor arra ma'r nem lesz megoldas (pl nem tudod mi a process PID-je). A popen() kicsit fapados, "ipari" kornyezetben nem igazan hasznalnam/hasznalom.
Szoval ami kell, az: fork() + pipe() + dup2() + select() + kill() +wait(), megfelelo"en alkalmazva. Ha ma'r hasznaltad ezeket akkor relative konnyu osszerakni. Ha nem, majd me'g irok hogy hogysmint erdemes nekiindulni.