
I've been having difficulty using iostreams::file_descriptor_sink with
popen in Linux. The problem is that popen() requires a matching pclose()
rather than a close(). Now, file_descriptor_sink has a close_on_exit
flag that, when set to false, supposedly prevents it from calling close()
on the underlying file descriptor, but it calls close() anyway. Is this
a bug in boost or am I doing it wrong? As a workaround I can call flush
() on the iostream and then pclose() on the filehandle, but it seems like
it would be better to actually close the iostream.
I've tested the example below using boost 1.39 and using 1.43 from
subversion. The result in both cases is:
pclose returned error (test A): Bad file descriptor
pclose returned error (test B): Bad file descriptor
Hello
Hello
-------------------------
#include <stdexcept>
#include <iostream>
#include