Обмен данными между процессами с использованием СООБЩЕНИЙ

Добрый день, форумчане!

Помогите, пожалуйста, разобраться с данным видом взаимодействия процессов.

Например у меня есть две программы:

1-ая

2-ая (программа) выводит эти результаты на терминал.

Прошу написать кодик 1 и 2 проги и объяснить, где происходит передача, а где прием!

Заранее спасибо!

Добавлено через 9 минут

Видимо, нужно использовать модули:

#include <sys/types.h>

#include <sys/ipc.h>

#include <sys/msg.h>

Из Робачевского:

Для идентификации сообщений можно использовать ключи, которые генерируются в системе при вызове функции

key_t ftok(char *filename, char proj);

Если процессу необходимо создать новую очередь сообщений, то флаг должен содержать макрос IPC_CREAT, а также права на чтение и запись сообщений в очередь (0644). При нормальном завершении функция возвращает идентификатор очереди, в случае ошибки возвращается значение -1.

Посылка и прием сообщений организуются при вызове функций

int msgsnd(int msgid, struct msgbuf *msgp, int msgsz, int msgflg);

и

int msgrcv(int msgid, struct msgbuf *msgp, int msgsz, long msgtyp, int msgflg);

Первый параметр задает идентификатор очереди. Второй параметр является указателем на сообщение. Сообщение представляет собой структуру

struct msgbuf {

long mtype; /* тип сообщения */

char mtext[]; /* указатель на буфер сообщения */

};

Параметр msgsz определяет длину сообщения. При значении параметра msgflg=0 процесс может блокироваться до тех пор пока функция не будет выполнена. Параметр msgtyp задает правила выбора сообщения из очереди. При нулевом значении параметра из очереди извлекается самое старое сообщение любого типа. Положительное значение определяет прием самого старого сообщения указанного типа.

Удаление очереди из системы производится при вызове функции

int msgctl(int msgid, int cmd, struct msgbuf *msgp);

при значении параметра cmd равном IPC_RMID.

Добавлено через 2 часа 21 минуту

ОЙ, немножко не туда засунул тему.

Модераторы, перенесите тему, пожалуйста, из С++ под Linux

в С под Linux