Используйте системный вызов open
с параметрами O_EXCL
и O_CREAT
. Если файл еще не существует, open
создаст его, откроет и вернет дескриптор файла; если он существует, open
не удастся и установите errno
на EEXIST
.
Оттуда должно быть очевидно, как построить цикл, который пытается увеличивать имена файлов, пока он не вернет дескриптор файла или не создаст имя файла слишком длинное. В последнем пункте, убедитесь, что вы проверяете errno
, когда open
терпит неудачу - EEXIST
и ENAMETOOLONG
- это только две ошибки, с которыми вы можете столкнуться.