ftruncate (fd, SIZE);
/* xotira xarita the birgalikda xotira ob'ekt */ ptr = (belgi *)
mmap (0, SIZE, PROT O'QING | PROT YOZING, MAP BASHILGAN, fd, 0);
/* yozish uchun the birgalikda xotira ob'ekt */ sprintf(ptr,"%s",xabar 0);
ptr += strlen (0-xabar); sprintf(ptr,"%s",xabar 1); ptr += strlen (1-xabar);
qaytish 0;
}
Rasm 3.16 Ishlab chiqaruvchi jarayon tasvirlash POSIX umumiy xotira API.
The ishlab chiqaruvchi, ko'rsatilgan ichida Rasm 3.16, yaratadi a umumiy xotira ob'ekt OS deb nomlanadi va mash'um qatorni yozadi "Salom World!" ni umumiy xotiraga kiriting. Dastur xotirasi belgilangan o'lchamdagi umumiy xotira ob'ektini xaritalaydi va ruxsat beradi yozish uchun the ob'ekt. The bayroq MAP BASHILGAN belgilaydi bu o'zgarishlar uchun umumiy xotira ob'ekt bo'ladi bo'l ko'rinadigan uchun hammasi jarayonlar almashish the ob'ekt. E'tibor bering, biz umumiy xotira ob'ektiga sprintf() funksiyasini chaqirish orqali yozamiz va yozish the formatlangan ip uchun the ko'rsatgich ptr . Keyin har biri yozish, biz ko'rsatgichni yozilgan baytlar soniga oshirishi kerak.
#o'z ichiga oladi < stdio.h > #include < stdlib.h > #include < fcntl.h > #include < sys/shm.h > #include < sys/stat.h >
#o'z ichiga oladi < sys/mman.h >
int asosiy()
{
/* the hajmi (in bayt) ning birgalikda xotira ob'ekt */ const int SIZE = 4096;
/* nomi ning the birgalikda xotira ob'ekt */ const char *ism = "OS";
/* birgalikda xotira fayl tavsiflovchi */ int fd;
/* ko'rsatgich uchun birgalikda xotira obekt */ belgi *ptr;
/* ochiq the birgalikda xotira ob'ekt */ fd = shm ochiq (ism, O RONLY, 0666);
/* xotira xarita the birgalikda xotira ob'ekt */ ptr = (belgi *)
mmap (0, SIZE, PROT O'QING | PROT YOZING, MAP BASHILGAN, fd, 0);
/* o'qing dan the birgalikda xotira ob'ekt */ printf("%s",(char *)ptr);
/* olib tashlash the birgalikda xotira ob'ekt */
Dostları ilə paylaş: |