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