On Thu, Oct 20, 2011 at 8:48 PM, Jens Alfke <j...@mooseyard.com> wrote:

> What’s unsafe is accessing file-mapped memory after the file becomes
> unavailable.
> If you use fread (or read), you’re not doing that. You're allocating your
> own memory from the heap first, then copying data from the file into it.
> There’s nothing dangerous about that. The memory will be available until you
> explicitly free it.

All the "f" Standard I/O calls return result codes.  The calls will
fail if your I/O fails for some reason, for example a disk being
ejected after you've opened it but before you've had a chance to read
it, or if you attempt to open a file only to find it missing.

While Mac OS X discourages the user from dismounting filesystems that
have open files on them, the user can forcibly dismount them.  If
nothing else, they can pull out a USB key, or disconnect a FireWire
cable or ethernet cable over which one is getting data from a file
server.

Use "man fopen", "man fread", "man fwrite", "man fseek" and "man
fclose" to see what the error codes are.

To be robust in the face of I/O error, you will need to design your
application well.  This is not a trivial task for a novice.  It takes
some experience to learn how to do it.

For C++, you would need to throw an exception on I/O error, then write
exception-safe code.  I have not yet really figured out the right way
to do the equivalent for Objective-C, because Objective-C exceptions
don't work like C++ exceptions do.

You can pass result codes back to calling functions, but you have to
be quite diligent about always doing so, always checking for results
from the functions you call, then doing something sensible no matter
what results your functions or methods or member functions return.


-- 
Don Quixote de la Mancha
Dulcinea Technologies Corporation
Software of Elegance and Beauty
http://www.dulcineatech.com
quix...@dulcineatech.com
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to