C++ dasturlash tilida fayllar bilan ishlash
Quyi darajadagi kiritish va chiqarish
Download 255.77 Kb. Pdf ko'rish
|
C dasturlash tilida fayllar bilan ishlash (1)
Quyi darajadagi kiritish va chiqarish. Quyi darajadagi kiritish va chiqarish
funksiyalari operatsion tizim imkoniyatlaridan to‘g‘ridan to‘g‘ri foydalanishga imkon beradi. Bu holda buferlash va formatlash bajarilmaydi. Faylni quyi darajadagi ochishda fayl bilan fayl (oqim) ko‘rsatkichi emas, deskriptor bog‘lanadi. Fayl deskriptori fayl ochilganligi to‘grisidagi ma’lumotni operatsion tizim ichki jadvallariga joylashtiruvini belgilovchi butun sondir. Quyi darajadagi funksiyalar bilan ishlashda dastur kodiga iostream.h kutubxonasini qo‘shishni talab qilmaydi. Ammo ushbu kutubxona fayllar bilan ishlashda foydali bo‘lgan ba’zi konstantalar (misol uchun fayl yakuni belgisi EOF) tarifini o‘z ichiga oladi. Ushbu konstatalarda foydalanganda iostream.h dasturga qo‘shilishi zarurdir. Fayllarni ochish va yopish. Fayllarni quyi darajadada ochish uchun open() funksiyasidan foydalaniladi: int fd= open (fayl nomi, bayroqlar, murojat). Bunda fd – fayl deskriptorini anglatadi; fayl nomi – belgilar massiviga ko‘rsatkichdir; bayroqlar – fayl ochish rejimini belgilovchi ifodadir. Ushbu ifoda fcntl.h kutubxona faylida saqlanuvchi konstantalardan biri yoki shu kostantalardan razryadli ‘|’ amali yordamida hosil qilingan bo‘lishi mumkin. Fayllarni ochish va yopish uchun konstantalar quyidagilardan iborat: O_APPEND – faylni oxiriga yozuv qo‘shish uchun ochish; O_BINARY – faylni bitli (ikkili)binar rejimda ochish; O_CREAT – yangi fayl yaratish va ochish; O_EXCL – agar O_CREAT bilan birga ko‘rsatilgan bo‘lsa va yaratilmoqchi bo‘lgan fayl mavjud bo‘lsa, faylni ochish funksiyasi xatolik bilan tugaydi. Bu mavjud faylni kompyuter xotirasidan o‘chib ketmasligini taminlaydi; O_RDONLY – faylni faqat o‘qish uchun ochish; O_RDWR – faylni o‘qish va yozish uchun ochish; O_TEXT – faylni matnli rejimda ochish; O_TRUNK – mavjud faylni ochish va bor ma’lumotni o‘chirish. Fayllar bilan ishlashda yuqorida keltirilgan buyruqlarlardan biri albatta ko‘rsatilgan bo‘lishi shart. Ro‘yxatda keltirilgan O_CREAT faqat ochish rejimida, ya’ni yangi fayl yaratishda foydalaniladi. MS DOS va MS WINDOWS operatsion tizimlarida murojat huquqlari parametrlarini berish uchun quyidagi konstantalardan foydalaniladi.: S_IWRITE – faylga yozishga ruxsat berish; S_IREAD – fayldan o‘qishga ruxsat berish; S_ IREAD\ S_WRITE – o‘qish va yozishga ruxsat berish. Ko‘rsatilgan konstantalar sys katalogida joylashgan stat.h sarlavhali faylda saqlanadi. Bu faylni qo‘shish #include oshiriladi. Agar murojaat parametri ko‘rsatilmagan bo‘lsa faqat fayldan o‘qishga ruxsat beriladi. UNIX operatsion tizimida murojaat huquqlari 3 xil foydalanuvchilar uchun ko‘rsatiladi: - fayl egasi; - foydalanuvchilar guruhi a’zosi; - boshqa foydalanuvchilar. Foydalanuvchilar huquqlari quyidagi belgilar orqali ko‘rsatiladi: - r – fayldan o‘qish ruxsat berilgan; - w – faylga yozish ruxsat berilgan; - x – fayllarni bajarish ruxsat berilgan. Agar biror murojaat huquqi berilmagan bo‘lsa, u holda ‘_’ belgisi qo‘yiladi. Agar fayl egasiga hamma huquqlar, foydalanuvchi guruhi a’zolariga o‘qish va bajarish, boshqa foydalanuvchilarga faqat bajarish huquqi berilgan bo‘lsa, murojaat qatorini quyidagicha yozish mumkin: rwxr-x-x. Har bir ‘_’ belgi o‘rniga 0 raqami, aks holda 1 raqami qo‘yilib hosil bo‘lgan sondagi o‘ng tomondan boshlab har bir uch raqamini sakkizlik son sifatida yozilsa, murojaat huquqini belgilovchi sakkizlik butun son hosil bo‘ladi. Yuqorida hosil qilingan rwxr-x-x qatori ikkilik 111101001 nihoyat sakkizlik 0751 son shaklida yozilib, open( ) funksiyasida murojaat huquqi parametri sifatida ko‘rsatiladi. Faylni ochishga quyidagi misollarni keltirish mumkin: 1. faylni o‘qish uchun ochish: fd=open ( “ t.txt “ , O_RONLY) 2. faylni o‘qish va yozish uchun ochish: fd = open(“ t.txt “ , O_RDWR) 3. faylni yangi ma’lumotlar yozish uchun ochish: fd = open(“ new.txt “ ,O_WRONLY_ |O-Creat| O_TRUNK, 0600) Sakkizlik konstanta 0600 shaklida berilgan murojaat huquqi parametrining belgili ko‘nishi rw bo‘lib, fayl egasiga o‘qish va yozish huquqi, qolgan foydalanuvchilarga hech qanday huquq berilmaganligini bildiradi. Faylni ochishda kelib chiqadigan xato turini aniqlash uchun errno.h sarlavhali faylda saqlanuvchi errno o‘zgaruvchisi xizmat qiladi. Agar bu o‘zgaruvchi qiymati, ushbu sarlavhali faylda saqlanuvchi EEXIST konstantasiga teng bo‘lsa ochilayotgan fayl mavjudligini bildiradi. sopen() funksiyasi bitta faylga bir necha dasturlardan murojaat qilish imkoniyatini yaratadi. Albatta dasturlar faylga faqat o‘qish rejimida murojaat qilishi mumkin. Faylni ochish uchun yana creat() funksiyasi mavjud bo‘lib quyidagi open() funksiyasini chaqirishga mos keladi: open(fay_ nomi, O_creat |O_TRUNK| O_WRONLY); – bu funksiya yangi fayl yaratadi va yozish uchun ochadi. Quyi darajada fayllarni yopish uchun close() funksiyasidan foydalanish talab etiladi. Ushbu funksiyaning ko‘rinishi quyidagicha: int close(fayl_nomi) Keltirilgan funksiya muvafaqiyatli bajarilganda 0 qiymat qabul qiladi. Xato bo‘lganda 1 qiymat qabul qiladi. Download 255.77 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling