219
Келесі бағдарлама екі процесс аралығындағы хабарламалардың
көмегімен ақпарат алмасуды безендіреді.
Бағдарлама екі процесті
туындатады — аталық процесс және топ-процесс. Аталық топқа латын
әріптері түріндегі хабарлама жібереді, әр хабарламаның типі — әріп
нөмірі. Топтары бұл хабарламаларды кері ретпен қабылдайды.
Қолданылатын кезектің идентификаторы PID
аталық-процесіне сәйкес
келеді:
#include
#include
#include
#include
#include
#include
#include
struct message
{
long type;
char text[10];
};
int main()
{
pid_t pid;
int qId;
char i;
int *status;
struct message my_message;
setvbuf(stdout,(char*)NULL,_IONBF,0);
switch (pid = fork() )
{
case -1:
perror("Bad fork\n");
_exit(1);
break;
case 0:
/* топ денесі */
/* аталықтың кезекті толтырғанын күтеміз */
sleep(10);
/* құрылған кезектерді ашу */
qId = msgget(getppid(), 0 ) ;
221
/* топтың аяқталуын күту */
wait(&status);
return 0;
}
}
Бұл жұмыстардың нәтижесінде экранға келесі мәтін шығады:
Queue ID: 3952
s> 1:A 2:B 3:C 4:D 5:E 6:F 7:G 8:H 9:I 10:J
11:K 12:L 13:M 14:N 15:O 16:P 17:Q 18:R
19:S 20:T 21:U 22:V 23:W 24:X 25:Y 26:Z
r> 2 6:Z 25:Y 24:X 23:W 22:V 21:U 20:T 19:S
18:R 17:Q 16:P 15:O 14:N 13:M 12:L 11:K
10:J 9:I 8:H 7:G 6:F 5:E 4:D 3:C 2:B 1:A
«s>» жолынан аталықтармен жіберілген, «г>» жолынан —
ұрақтармен қабылданатын хабарламалар басталады. Әрі қарай экранға
идентификатор
- мәтін жұбы, хабарламаны кезекке салынуы немесе
алынуы шығады.
Достарыңызбен бөлісу: