#include #include #include #include #include using namespace boost::iostreams; int main() { HANDLE handles[2]; SECURITY_ATTRIBUTES sa; ZeroMemory(&sa, sizeof(sa)); sa.nLength = sizeof(sa); CreatePipe(&handles[0], &handles[1], &sa, 0); char buffer[2] = { 'a', 'b' }; DWORD written; WriteFile(handles[1], buffer, 2, &written, NULL); CloseHandle(handles[1]); file_descriptor_source source(handles[0], close_handle); filtering_istream is; is.push(source); std::cout << get(is) << std::endl; // 97 std::cout << get(is) << std::endl; // 98 std::cout << get(is) << std::endl; // should be: -1 (but is 0) std::cout << get(is) << std::endl; // -1 }