Ticket #6576: test1.cpp

File test1.cpp, 783 bytes (added by boris@…, 10 years ago)

Throws when read-end is closed

Line 
1#include <boost/iostreams/device/file_descriptor.hpp>
2#include <boost/iostreams/get.hpp>
3#include <iostream>
4#include <Windows.h>
5
6using namespace boost::iostreams;
7
8int main()
9{
10 HANDLE handles[2];
11 SECURITY_ATTRIBUTES sa;
12 ZeroMemory(&sa, sizeof(sa));
13 sa.nLength = sizeof(sa);
14 CreatePipe(&handles[0], &handles[1], &sa, 0);
15
16 char buffer[2] = { 'a', 'b' };
17 DWORD written;
18 WriteFile(handles[1], buffer, 2, &written, NULL);
19 CloseHandle(handles[1]);
20
21 file_descriptor_source is(handles[0], close_handle);
22
23 std::cout << get(is) << std::endl; // 97
24 std::cout << get(is) << std::endl; // 98
25 std::cout << get(is) << std::endl; // should be: -1 (but throws an exception)
26 std::cout << get(is) << std::endl; // should be: -1
27}