<html lang="en">
<head>
<title>Error Recovery - The GNU C Library</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="The GNU C Library">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="I_002fO-on-Streams.html#I_002fO-on-Streams" title="I/O on Streams">
<link rel="prev" href="EOF-and-Errors.html#EOF-and-Errors" title="EOF and Errors">
<link rel="next" href="Binary-Streams.html#Binary-Streams" title="Binary Streams">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU C library.

This is Edition 0.12, last updated 2007-10-27,
of `The GNU C Library Reference Manual', for version
2.8 (Sourcery G++ Lite 2011.03-41).

Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
2003, 2007, 2008, 2010 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software Needs Free Documentation''
and ``GNU Lesser General Public License'', the Front-Cover texts being
``A GNU Manual'', and with the Back-Cover Texts as in (a) below.  A
copy of the license is included in the section entitled "GNU Free
Documentation License".

(a) The FSF's Back-Cover Text is: ``You have the freedom to
copy and modify this GNU manual.  Buying copies from the FSF
supports it in developing GNU and promoting software freedom.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Error-Recovery"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Binary-Streams.html#Binary-Streams">Binary Streams</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="EOF-and-Errors.html#EOF-and-Errors">EOF and Errors</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="I_002fO-on-Streams.html#I_002fO-on-Streams">I/O on Streams</a>
<hr>
</div>

<h3 class="section">12.16 Recovering from errors</h3>

<p>You may explicitly clear the error and EOF flags with the <code>clearerr</code>
function.

<!-- stdio.h -->
<!-- ISO -->
<div class="defun">
&mdash; Function: void <b>clearerr</b> (<var>FILE *stream</var>)<var><a name="index-clearerr-1102"></a></var><br>
<blockquote><p>This function clears the end-of-file and error indicators for the
stream <var>stream</var>.

        <p>The file positioning functions (see <a href="File-Positioning.html#File-Positioning">File Positioning</a>) also clear the
end-of-file indicator for the stream. 
</p></blockquote></div>

<!-- stdio.h -->
<!-- GNU -->
<div class="defun">
&mdash; Function: void <b>clearerr_unlocked</b> (<var>FILE *stream</var>)<var><a name="index-clearerr_005funlocked-1103"></a></var><br>
<blockquote><p>The <code>clearerr_unlocked</code> function is equivalent to the <code>clearerr</code>
function except that it does not implicitly lock the stream.

        <p>This function is a GNU extension. 
</p></blockquote></div>

   <p>Note that it is <em>not</em> correct to just clear the error flag and retry
a failed stream operation.  After a failed write, any number of
characters since the last buffer flush may have been committed to the
file, while some buffered data may have been discarded.  Merely retrying
can thus cause lost or repeated data.

   <p>A failed read may leave the file pointer in an inappropriate position for
a second try.  In both cases, you should seek to a known position before
retrying.

   <p>Most errors that can happen are not recoverable &mdash; a second try will
always fail again in the same way.  So usually it is best to give up and
report the error to the user, rather than install complicated recovery
logic.

   <p>One important exception is <code>EINTR</code> (see <a href="Interrupted-Primitives.html#Interrupted-Primitives">Interrupted Primitives</a>). 
Many stream I/O implementations will treat it as an ordinary error, which
can be quite inconvenient.  You can avoid this hassle by installing all
signals with the <code>SA_RESTART</code> flag.

   <p>For similar reasons, setting nonblocking I/O on a stream's file
descriptor is not usually advisable.

   </body></html>

