Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Użyj flagi IPC_STAT dla funkcji shmctl() celem uzyskania informacji na temat u ż y -
- wanego przez proces obszaru pami ę ci dzielonej.
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/ipc.h>
- #include <sys/types.h>
- #include <sys/shm.h>
- #include <string.h>
- #define MESSAGE "Jakas wiadomosc"
- int main(void)
- {
- int shmid;
- struct shmid_ds info;
- char *shared_memory;
- if((shmid = shmget(IPC_PRIVATE, SHMLBA, 0775 | IPC_CREAT | IPC_EXCL)) == -1){
- perror("shmget");
- return EXIT_FAILURE;
- }
- if((shared_memory = (char *)shmat(shmid, NULL, 0)) == (void *)-1){
- perror("shamt");
- return EXIT_FAILURE;
- }
- strncpy(shared_memory, MESSAGE, strlen(MESSAGE));
- if(shmdt(shared_memory) == -1){
- perror("shmdt");
- return EXIT_FAILURE;
- }
- if(shmctl(shmid, IPC_STAT, &info) == -1){
- perror("shmctl_stat");
- return EXIT_FAILURE;
- }
- printf("PID tworcy: %d\nObszar zajmuje: %zd\n",
- info.shm_cpid, info.shm_segsz);
- if(shmctl(shmid, IPC_RMID, NULL) == -1){
- perror("shmctl_rmid");
- return EXIT_FAILURE;
- }
- return EXIT_SUCCESS;
- }
Add Comment
Please, Sign In to add comment