#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <time.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/shm.h>
#include <sys/msg.h>
#include <sys/time.h>
#include <semaphore.h>
#include <fcntl.h>
#include <signal.h>
#include <stdbool.h>
#define TEST_ERROR if (errno) {fprintf(stderr, \
"%s:%d: PID=%5d: Error %d (%s)\n", \
__FILE__, \
__LINE__, \
getpid(), \
errno, \
strerror(errno));}
struct individuals {
pid_t writer;
};
struct shared_data {
struct individuals vec[10];
};
int main()
{
int shm_people_id;
struct shared_data *people;
shm_people_id = shmget(IPC_PRIVATE, sizeof(*people), 0600);
TEST_ERROR;
printf("My shm_people_id is %d\n", shm_people_id);
if((people = shmat(shm_people_id, NULL, 0)) == NULL) {
printf("empty shm\n");
}
shmctl(shm_people_id, IPC_RMID, NULL);
}
Como posso verificar se uma memória compartilhada está vazia (por vazio quero dizer, sem dados colocados como neste código) depois de se referir a ela?
Tags c ipc shared-memory