
On Thu, 06 May 2010 09:26:35 -0400, Eric MALENFANT wrote:
DeĀ : Dan Stahlke
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.
That looks a lot like this ticket: https://svn.boost.org/trac/boost/ticket/3517 A workaround is to explicitly call set_auto_close(false).
Calling set_auto_close(false) fixes the first case (involving the destructor) but not the second (in which file_descriptor_sink::close is explicitly called by me). Is there a way that file_descriptor_sink::close can be made to not call close(int fd)?