fork/exec & close file descriptors

alister alister.nospam.ware at ntlworld.com
Wed Jun 3 08:18:37 EDT 2015


On Wed, 03 Jun 2015 22:07:47 +1000, Steven D'Aprano wrote:

> On Wed, 3 Jun 2015 07:38 pm, alister wrote:
> 
>> On Wed, 03 Jun 2015 10:41:44 +0300, Marko Rauhamaa wrote:
> [...]
>>> Here's the deal: the child process is saddled with file descriptors it
>>> never wanted in the first place. It can't decline them. Now you're
>>> saying it can't even dispose of them.
>>> 
>> No You cab dispose of them you just need to warn the user that the
>> action did not complete correctly & there may be errors with the data.
> 
> *What* action? Pay closer attention to what Marko wrote:
> 
> "the child process ..."
> 
> How does the child process know what action didn't complete? What error
> message are you going to display to the user?
> 
> "Error when closing file descriptor 123456"
> 
> What action do you think the user can take on seeing this error message?
> 
> 
>> Example What does your test editor do if you try to save a file back to
>> a USB stick that has been removed? does it simply let you think the
>> file has been successfully saved? i hope not.
> 
> 
> Correct me if I'm wrong, but don't you get an error when you try to
> *open* a file on a missing USB stick?
> 
> There are at least three opportunities to get an error when writing a
> file:
> 
> * opening the file;
> * writing to the file;
> * closing the file.
> 
> It's not clear what conditions will lead to the first two succeeding but
> the third failing, or what to do if you get such an error. If you don't
> know what caused close() to fail,

open file for appending data
write some data
remove mem stick
now try to close file

> then you can't do anything about it,
Correct you cant do anything about it.
> and if you can't do anything about it, what's the point in reporting the
> error to the user who will just get frustrated and nervous and not be
> able to do anything about it either?

Because they need to know they may have just lost important data whilst 
they still have a chance to do it again. finding out 6 months later that 
they had screwed up saving data on a multi-million pound account will not 
be good & quite rightly considered to be due to a bug in your software.


> 
> I'm sure that there are circumstances where an error when closing a file
> is a clear and obvious fault that should be reported. But in the
> scenario that Marko is describing, I'm not so sure that is the case.

from the scenario Marco is reporting I get the impression that he is 
having to interact with a system that is fundamentally flawed from the 
ground up.



-- 
Standards are crucial.  And the best thing about standards is: there are
so ____many to choose from!



More information about the Python-list mailing list