$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [Boost-users] file_descriptor_sink vs. pclose
From: Dan Stahlke (dstahlke_at_[hidden])
Date: 2010-05-06 12:49:48
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)?