PracticeDev/study_clang/ipc_test/shared_mem/ipc_share_mem_single.c

42 lines
1.4 KiB
C

/*************************************************************************
> File Name : ipc_share_mem_single.c
> Author : TL Song
> EMail : songtianlun@frytea.com
> Created Time : Wed 30 Dec 2020 03:12:37 PM CST
************************************************************************/
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
int main(void) {
pid_t pid;
int *shared; /* pointer to the shm */
int shmid;
shmid = shmget(IPC_PRIVATE, sizeof(int), IPC_CREAT | 0666);
if (fork() == 0) { /* Child */
/* Attach to shared memory and print the pointer */
shared = shmat(shmid, (void *) 0, 0);
printf("Child pointer %p\n", shared);
*shared=1;
printf("Child value=%d\n", *shared);
sleep(10);
printf("Child value=%d\n", *shared);
} else { /* Parent */
/* Attach to shared memory and print the pointer */
shared = shmat(shmid, (void *) 0, 0);
printf("Parent pointer %p\n", shared);
printf("Parent value=%d\n", *shared);
sleep(1);
*shared=42;
printf("Parent value=%d\n", *shared);
sleep(14);
shmctl(shmid, IPC_RMID, 0);
}
}