进程间读取不正确

Incorrect interprocess reading

我正在做一个 client/server 具有共享内存的通信系统。我正在与客户端一起编写服务器随后将读取的 PID。问题是当我尝试读取该值时,它只读取最低有效的 8 位。这是一段代码:

 int receive(void* data, void * connection) {
   connection_t * c = (connection_t *)connection;

   printf("PRINTING: %d \n", *(c->address));


   return 0;
}

void notify_server() {
  int mem_id = shmget(PUBLIC_KEY, PAGE_SIZE, PERMISSION_FLAGS);
  int * address = shmat(mem_id, NULL, 0);
  int sem_id = semget(PUBLIC_KEY, 1, PERMISSION_FLAGS);

  *address = (pid_t)PRIVATE_KEY;
  printf("FROM CLIENT, PRINT MY PID --- %d\n", *address);
}

结构是:

typedef struct {
  int id;
  char * address;
  struct shmid_ds data;
  int sem_id;
  struct sembuf sb;
} connection_t;

address 字段是 char: char * address;

所以当然 *(c->address) 会给出一个 char,它是 8 位。