Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <sys/wait.h>
- #include <sys/ipc.h>
- #include <sys/shm.h>
- #define SHMSIZE 4
- #define ARRAY_ELEM 10
- int main(int argc, char *argv[])
- {
- pid_t pid;
- key_t key;
- int shmid;
- pid = fork();
- if (pid == -1)
- {
- perror("fork");
- exit(EXIT_FAILURE);
- }
- else if (pid == 0)
- {
- int *ptr;
- key = ftok(".", 1);
- shmid = shmget(key, sizeof(int) * ARRAY_ELEM, IPC_CREAT | 0755);
- ptr = shmat(shmid, NULL, 0);
- for (int i = 0; i < ARRAY_ELEM; i++)
- ptr[i] = i * 11;
- printf("Child int pointer address: %p\n", ptr);
- shmdt(ptr);
- return 0;
- }
- else if (pid > 0)
- {
- wait(NULL);
- int *ptr;
- key = ftok(".", 1);
- shmid = shmget(key, sizeof(int) * ARRAY_ELEM, 0755);
- ptr = shmat(shmid, NULL, 0);
- printf("Parent int pointer address: %p\n", ptr);
- for (int i = 0; i < ARRAY_ELEM; i++)
- printf("Shared memory value: %d\n", ptr[i]);
- shmdt(ptr);
- // shmctl(shmid, IPC_RMID, NULL);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment