Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 25
1

Параллельные процессы read и write в работе с FIFO

09.05.2012, 15:36. Показов 2582. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.

В порядке самостоятельного изучения языка написал программку:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
 
int i, fp;
char buf;
 
int main(int argc, char *argv[])
{
    if (argc == 1)
    {
        printf("Вы не указали имя файла\n");
        return 1;
    }
  
    mkfifo(argv[1], 0777);
 
    if (fork())
    {
        fp = open(argv[1], O_WRONLY);
        for (i = 0; i < 30; ++i)
        {
            buf = 'A' + i;
            printf("Мой PID = %d, я пишу в файл символ %c\n", getpid(), buf);
            write(fp, &buf, 1);
        } 
        close(fp);
    }
    else
    {
        fp = open(argv[1], O_RDOLNY);
        while(read(fp, &buf, 1))
        {
            printf("Мой PID = %d, я читаю символ %c\n", getpid(), buf);
        }
        close(fp);
    }
    return 0;
}
Чем определяется порядок записи/чтения? Да, понятно, имеет место существование встроенных блокировок read и write. Но почему бывает случай "пишу А, пишу B, читаю А, читаю В, пишу С, читаю С...", а бывает напишет он все что можно, а только потом сразу все читает? Вопрос исключительно времени (написать к примеру sleep(10) в блоке чтения, и тогда сначала напишет 5 символов, потом прочитает 5, потом поочередно по одному)? И вообще, что в таком случае понимать под разным порядком вывода текстовых сообщений? То, что они именно в таком порядке пишут и читают или это относится исключительно к порядку появления сообщений?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2012, 15:36
Ответы с готовыми решениями:

FIFO и дочерние процессы
День добрый, пишу курсач вот задание: вот что я навоял: #include &lt;stdio.h&gt; #include...

параллельные процессы
Задание: Нужно создать два параллельных процесса. каждый осуществляется работу с одним и тем же...

Параллельные процессы в c#
Есть задача: читать из таблицы в бд ms SQL некоторую колонку с путями к файлам и копировать их по...

Параллельные процессы
Добрый день. В своей программе - я обрабатываю массив, массив очень большой и обрабатывается...

1
52 / 52 / 2
Регистрация: 09.03.2012
Сообщений: 101
09.05.2012, 16:18 2
1. Порядок одновременного выполнения операций может быть случайным. Это зависит от операционной системы, загруженности процессоров, расположения файлов на жёстких дисках и др.
2. Сообщения могут выводиться в другом порядке, чем выполнение операций.
3. Чтобы чётко определить порядок выполнения используются critical section, mutex, event. Некоторые из них работают только в рамках одного процесса, другие глобально.
1
09.05.2012, 16:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2012, 16:18
Помогаю со студенческими работами здесь

Параллельные процессы, их синхронизация.
Нужно каким-то образом внутри одного параллельного потока (TThread) узнать (скопировать) некоторое...

Потоки ввода/вывода, дочерние процессы и FIFO
Доброго времени суток! пишу курсовую, через неделю нужно здать, поэтому прошу помощи, знаю что эта...

Параллельные процессы в Delphi 2010
Ребят, есть код: procedure TFormMain.BitBtn2Click(Sender: TObject); begin ...

read(); write();
Вот такая вот небольшая программка fstream myFileReader(&quot;hardware.dat&quot;, ios::in | ios::out); ...

Функции write и read
Здравствуйте, уважаемые! Вопросы по работе с файлом через fstream. Возник вопрос по поводу записи...

Read/write property
Программирую на делфи, там есть read/write property. то есть при записи в поле - такое действие,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru