Verificando se a memória compartilhada está vazia após o shmat

0
#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?

    
por Zeno Raiser 05.01.2018 / 16:47

0 respostas