Hi All,
Ну что вы все молчите? Может я чего упустила или проблему объяснила непонятно? Или никто на эти грабли не наступал?
Подсунула я вместо cmd приложение printf("Hello world"); ,те же грабли — буферизует, пока не завершится клиентское приложение. Полезла смотреть в CRT как printf работает, так вот похоже с редирекчеными handles он делает буферизацию которую не должен — ошибочка похоже в _FLSBUF.c в функцие _flswbuf()
/* Do NOT get a buffer if (1) stream is stdout/stderr, and
(2) stream is NOT a tty.
[If stdout/stderr is a tty, we do NOT set up single char
buffering. This is so that later temporary buffering will
not be thwarted by the _IONBF bit being set (see
_stbuf/_ftbuf usage).]
*/
if (!( ((stream==stdout) || (stream==stderr))
&& (_isatty(fh)) ))
_getbuf(stream);
вроде забыли перед _isatty() ! поставить как в коментариях написано, получается буферизация, а не должна вроде.
Есть корректный путь как обойти проблему такого плана?
--Christine