Реферат: Interprocess Communication

key=ftok("/usr/mash",'s'); /*получаем уникальный ключ, однозначно определяющий доступ к ресурсу данного типа */

msgid=msgget(key, 0666 | IPC_CREAT); /*создаем очередь сообщений , 0666 определяет права доступа */

for(;;) { /* запускаем вечный цикл */

gets(str); /* читаем из стандартного ввода строку */

strcpy(Message.Data, str); /* и копируем ее в буфер сообщения */

switch(str[0]){

case 'a':

case 'A': Message.mtype=1; /* устанавливаем тип и посылаем сообщение в очередь*/

msgsnd(msgid, (struct msgbuf*) (&Message), strlen(str)+1, 0);

break;

case 'b':

case 'B': Message.mtype=2;

msgsnd(msgid, (struct msgbuf*) (&Message), strlen(str)+1, 0);

break;

case q':

case 'Q': Message.mtype=1;

msgsnd(msgid, (struct msgbuf*) (&Message), strlen(str)+1, 0);

Message.mtype=2;

msgsnd(msgid, (struct msgbuf*) (&Message), strlen(str)+1, 0);

sleep(10); /* ждем получения сообщений процессами А и В */

msgctl(msgid, IPC_RMID, NULL); /* уничтожаем очередь*/

exit(0);

default: break;

}

}

}

Процесс-приемник А /* процесс В аналогичен с точностью до четвертого параметра в msgrcv */

#include <sys/types.h>

#include <sys/ipc.h>

К-во Просмотров: 363
Бесплатно скачать Реферат: Interprocess Communication