Всё ходим вокруг одного и того же.
Код:
do {
if (select(...) == -1)
break; //закрылся /bin/sh
recv(...)
printf(...);
} while (1); //пока не закроется /bin/sh
Вы не сможете узнать о закрытии
конкретной отфоркнутой от /bin/sh программы. Вы можете только читать вывод
всех программ, выполняющихся в рамках \bin\sh.