/********************************************************************************* * Copyright: (C) 2025 LingYun IoT System Studio * All rights reserved. * * Filename: shm_read.c * Description: This file is Shared Memory(read) example program * * Version: 1.0.0(11/10/2025) * Author: Guo Wenxue * ChangeLog: 1, Release initial version on "11/10/2025 11:08:24 AM" * ********************************************************************************/ #include #include #include #include #include #include #include #include #define FTOK_PATH "/dev/zero" #define FTOK_PROJID 0x22 typedef struct student_s { char name[64]; int age; } student_t; int main(int argc, char **argv) { student_t *student; key_t key; int shmid; int i; if( (key=ftok(FTOK_PATH, FTOK_PROJID)) < 0 ) { printf("ftok() get IPC token failure: %s\n", strerror(errno)); return -1; } shmid = shmget(key, sizeof(*student), IPC_CREAT|0666); if( shmid < 0) { printf("shmget() create shared memroy failure: %s\n", strerror(errno)); return -2; } student = shmat(shmid, NULL, 0); if( (void *)-1 == student ) { printf("shmat() alloc shared memroy failure: %s\n", strerror(errno)); return -2; } for(i=0; i<4; i++) { printf("Student '%s' age [%d]\n", student->name, student->age); sleep(1); } shmdt(student); shmctl(shmid, IPC_RMID, NULL); return 0; }