En cuanto a poner la estructura en la memoria compartida, el valor de la cadena en la estructura "desaparece de la nada"

Registre los trabajos pequeños de cliente / servidor con memoria compartida shm y fork multiproceso en Linux

Puse tal estructura en la memoria compartida

struct buffer_area{
	char ID[MAXLINE];
	char MSG[MAXLINE];
};

Donde

#define MAXLINE 8192

Así es como se crea la memoria compartida

shmid=shmget((key_t)MEM_KEY,sizeof(struct buffer_area*),IPC_CREAT|0666);

Entonces hay un problema, es decir, después de que mi MSG es asignado en un proceso, el valor en otro proceso se ha ido inexplicablemente. He estado angustiado por mucho tiempo, y luego hay un destello de luz, como si Dios no pudiera verlo y quisiera dar consejos. Al igual que yo, creo que puede ser que la matriz en la estructura sea demasiado grande y la memoria compartida no sea suficiente. Luego cambié MAXLINE a 1024 ,,,, y se resolvió así, vomité

Publicado 19 artículos originales · elogiado 0 · visitas 416

Supongo que te gusta

Origin blog.csdn.net/weixin_42986599/article/details/105319521
Recomendado
Clasificación