Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

Dukat



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
#include <stdio.h>
#include <stdlib.h>
#include <sys/msg.h>
#include <sys/ipc.h>
#include <sys/types.h>
 
/* порожденный процесс генерирует случайные числа
и пересылает их посредством очереди процессу родителю,
и они оба выводят их в стандартный поток вывода */
 
typedef struct mymsgbuf
{
    long mtype;
    int num;
} mess_t;
 
int main()
{
    int qid;
    key_t msgkey;
    pid_t pid;
    mess_t buf;
    int length;
    int cont;
    length = sizeof(mess_t) - sizeof(long);
 
    if ((msgkey = ftok(".",'m')) < 0)
    {
        printf("Can\'t open channel\n");
        return 1;
    }
 
    if ((qid = msgget(msgkey, IPC_CREAT | 0660)) < 0)
    {
        printf("Can\'t create queue message\n");
        return 1;
    }
 
    if(!(pid = fork()))
    {
        printf("SON: QID = %d\n", qid);
        srand (time (0));
        for(cont = 0; cont < 10; cont++)
        {
            sleep (rand()%4);
            buf.mtype = 1;
            buf.num = rand()%100;
            msgsnd(qid, &buf, length, 0);
            printf("SON: MESSAGE NUMBER %d: %d\n", cont+1, buf.num);
        }
 
        return 0;
    }
 
    printf("FATHER: QID = %d\n", qid);
 
    for(cont = 0; cont < 10; cont++){
        sleep (rand()%4);
        msgrcv(qid, &buf, length, 1, 0);
        printf("FATHER: MESSAGE NUMBER %d: %d\n", cont+1, buf.num);
    }
 
    msgctl(qid, IPC_RMID, 0);
 
    return 0;
}
 

Всего записей: 1412 | Зарегистр. 01-10-2006 | Отправлено: 10:03 13-05-2010
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru