The ISO/IEC 9899-1999 C standard function
fopen() is typically used to open an existing file, or create a new one. However,
fopen() does not provide a way to determine if an existing file has been opened or a new file has been created. This may lead to a program overwriting or accessing an unintended file.
Non-Compliant Example 1
In this example, a file name is supplied to
fopen() to create and open for writing. However, there is no guaruntee that the file referenced by
file_name does not exist prior to calling
fopen(). This may cause an unintended file to be overwritten.
Compliant Solution 1.
open() function (Open Group 04c) provides a a way to test for file existence. If the
O_EXCL flags are used together, the
open() function will fail if the file specified by
file_name already exists.