Shay
Shay

Reputation: 41

check if fclose() fails and return specific error

So, I tried to find an answer to this question unsuccessfully.

I know what to do and how to manage such a case - by using fluss/NULL etc. afterward. But checking it is tricky to me.

So, basically:

open some file(successfully) - let's call the pointer: file.
after some code running...
fclose(file);

Now, how can I check after(before it's also an option) closing the file - that it really happened?

What is the condition? By demand, I need to handle this case by printing some specific errors.

Upvotes: 2

Views: 2778

Answers (1)

ice05
ice05

Reputation: 529

You can use the following snippet:

#include <errno.h> 

if(fclose(file) != 0)
{
    fprintf(stderr, "Error closing file: %s", strerror(errno));
}

From the man pages, we see that an error in closing a file using fclose() sets the global variable errno to a value indicating what error occurred. The function strerror() takes this value of errno and outputs a string to help indicate what the error actually was.

Upvotes: 3

Related Questions