Junior — Middle
Fayl mavjud bo'lmaganda uni yaratishni qanday ta'minlash mumkin?
sobes.tech AI
AIdan javob
C/C++ da fayl mavjud bo'lmagan taqdirda uni yaratishni ta'minlash uchun bir nechta usullar mavjud:
- POSIX tizim chaqiruvi
openyordamida faylni ochishdaO_CREAT | O_EXCLflagidan foydalanish.O_EXCLflagi fayl faqat mavjud bo'lmagan taqdirda yaratilishini kafolatlaydi, aks holda chaqiriq xato bilan yakunlanadi.
#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 allaqachon mavjud yoki xato");
} else {
// Fayl muvaffaqiyatli yaratildi
close(fd);
}
- C++ standarti kutubxonasida
<filesystem>yordamida fayl mavjudligini tekshirish va agar mavjud bo'lmasa, faylni yaratish mumkin (C++17 dan boshlab):
#include <filesystem>
#include <fstream>
namespace fs = std::filesystem;
if (!fs::exists("file.txt")) {
std::ofstream ofs("file.txt");
// fayl yaratildi
}
- C tilida avval
fopenyordamida fayl mavjudligini tekshirish mumkin, va agar fayl topilmasa, yozish rejimida ochish mumkin. Ammo bu usul atomik emas va ko'p ipli muhitlarda raqobat shartlariga olib kelishi mumkin.
Shuning uchun, eng ishonchli usul — open ni O_CREAT | O_EXCL flaglari bilan ishlatish va fayl faqat mavjud bo'lmagan taqdirda atomik tarzda yaratishdir.