进程间读取不正确
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 位。
我正在做一个 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 位。