forse sbaglio ma..

codice:
struct msgbuf1 {
	               long mtype;
	               char mtext[100];
		       int pid;
	} *sndbuf, rcvbuf;
uno dei 2 è puntatore, l'altro no...

con le strutture non va usato il dereference se non è allocata in heap, quindi l'uso da fare sarebbe corretto

rcvbuf.pid;

a meno che la struttura non sia allocata con qualcosa del genere

rcvbuf* pippo = (rcvbuf*) malloc(sizeof(rcvbuf));

che non mi pare il caso.


prova a fare cosi'

codice:
struct msgbuf1 {
	               long mtype;
	               char mtext[100];
		       int pid;
	};

//main
msgbuf a;
a.pid= 3;

printf ("%d",a.pid);

e vedi cosa ti viene fuori

spero di non aver detto boiate