Junior — Middle
Faylın mövcud olmaması halında onun yaradılmasını necə təmin etmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
C/C++-da, faylın mövcud olmaması halında onu yaratmağı təmin etmək üçün bir neçə üsul mövcuddur:
- POSIX sistem çağırışı
openistifadə edərək faylı açarkənO_CREAT | O_EXCLbayrağından istifadə etmək.O_EXCLbayrağı faylın yalnız mövcud olmadığı halda yaradılmasını təmin edir, əks halda çağırış səhvlə nəticələnəcək.
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
int fd = open("file.txt", O_CREAT | O_EXCL | O_WRONLY, 0644);
if (fd == -1) {
perror("Fayl artıq mövcuddur və ya xəta");
} else {
// Fayl uğurla yaradıldı
close(fd);
}
- C++ standart kitabxanasında
<filesystem>istifadə edərək faylın mövcud olub-olmadığını yoxlamaq və yoxdursa faylı yaratmaq mümkündür (C++17-dən etibarən):
#include <filesystem>
#include <fstream>
namespace fs = std::filesystem;
if (!fs::exists("file.txt")) {
std::ofstream ofs("file.txt");
// fayl yaradıldı
}
- C-də əvvəlcə
fopenilə faylın mövcud olub-olmadığını yoxlamaq və əgər tapılmazsa, onu yazma rejimində açmaq olar. Ancaq bu üsul atomik deyil və çox ipli mühitlərdə yarış şəraitinə səbəb ola bilər.
Ən etibarlı üsul isə open funksiyasını O_CREAT | O_EXCL bayraqları ilə istifadə etmək və faylı yalnız mövcud deyilsə atomik şəkildə yaratmaqdır.