Dans le fichier kirk.c
, nous pouvons introduire une variable enum qui va définir le type de message à envoyer. La structure struct my_msgbuf
a une variable membre long mtype;
. On peut l'initialiser au type de message avant de l'envoyer au récepteur, dans ce cas - spock.c
.
La déclaration enum:
enum msgType {
URGENT = 0,
NORMAL = 1
};
La déclaration enum ci-dessus peuvent être mis dans un fichier d'en-tête commune à la fois kirk.c
et spock.c
.
La ligne buf.mtype = 1; /* we don't really care in this case */
devrait être modifié buf.mtype = URGENT; /* we don't really care in this case */
En spock.c
, les lignes suivantes:
for(;;) { /* Spock never quits! */
if (msgrcv(msqid, &buf, sizeof(buf.mtext), 0, 0) == -1) {
perror("msgrcv");
exit(1);
}
printf("spock: \"%s\"\n", buf.mtext);
}
..will être modifiés pour:
for(;;) { /* Spock never quits! */
if (msgrcv(msqid, &buf, sizeof(buf.mtext), 0, 0) == -1) {
perror("msgrcv");
exit(1);
}
if (URGENT != buf.mtype) {
printf("spock: \"%s\"\n", buf.mtext);
}
}
Ainsi, spock sera "processus" (dans ce cas, il imprime simplement les données comme moyen de traitement) le message seulement si le type de message est autre que URGENT
.
Les questions qui dépendent du contenu lié risquent de devenir inutiles lorsque le contenu lié n'est pas disponible. Envisagez de créer un exemple minimal, complet et vérifiable: http://stackoverflow.com/help/mcve –