📄 reader.c
字号:
/********** reader.c ***********/
#include <sys/types.h>
#include <sys/mman.h>
#include <semaphore.h>
#include <errno.h>
#include <sys/stat.h>
#include <sys/fcntl.h>
char shm_fn[] = "my_shm";
char sem_fn[] = "my_sem";
/**** READER ****/
main(){
caddr_t shmptr;
int shmdes, index;
sem_t *semdes;
int SHM_SIZE;
/* Open the shared memory object */
SHM_SIZE = sysconf(_SC_PAGE_SIZE);
if ( (shmdes = shm_open(shm_fn, O_RDWR, 0)) == -1 ) {
perror("shm_open failure");
exit();
}
if((shmptr = mmap(0, SHM_SIZE, PROT_WRITE|PROT_READ, MAP_SHARED,
shmdes,0)) == (caddr_t) -1){
perror("mmap failure");
exit();
}
/* Open the Semaphore */
semdes = sem_open(sem_fn, 0, 0644, 0);
if(semdes == (void*) -1){
perror("sem_open failure");
exit();
}
/* Lock the semaphore */
if(!sem_wait(semdes)){
/* Access to the shared memory area */
for(index = 0; index < 100; index++)
printf("The shared memory shmptr[%d] = %d\n", index,shmptr[index]);
/* Release the semaphore lock */
sem_post(semdes);
}
munmap(shmptr, SHM_SIZE);
/* Close the shared memory object */
close(shmdes);
/* Close the Semaphore */
sem_close(semdes);
sem_unlink(sem_fn);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -