Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
 Аватар для katusha17
2 / 2 / 3
Регистрация: 04.03.2014
Сообщений: 75

Порождение процесса; запись и чтение из файла

21.03.2016, 11:45. Показов 3444. Ответов 4

Студворк — интернет-сервис помощи студентам
Доброго времени суток)
Помогите, пожалуйста, с заданием. Требуется написать программу.
Текст задания следующий:
Процесс 1 открывает файл и порождает потомка 2. Процесс 2 пишет N байт в файл по одному байту, процесс 1, не дожидаясь окончания процесса-потомка, начинает читать из файла по одному байту и выводит их на экран. Процесс 1 завершается, когда достигнут конец файла.

Заранее спасибо)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.03.2016, 11:45
Ответы с готовыми решениями:

Порождение нового процесса и запуск программы в рамках порожденного процесса
Цель работы. Изучение программных средств создания процессов, а также простейших способов обмена данными между процессами. Задание к...

Порождение процесса
Здравствуйте, у меня такая проблема: переменная f в родителе (строка 28) остается всегда нулевой, хотя потомок ее изменяет(строка 22)....

Порождение нового процесса
Нужно немного переработать код. Задание: разработать программу, вычисляющую плотность распределения Пуассона с параметром lambda в точке k...

4
 Аватар для katusha17
2 / 2 / 3
Регистрация: 04.03.2014
Сообщений: 75
28.03.2016, 10:51  [ТС]
Пожалуйста
0
92 / 19 / 4
Регистрация: 11.04.2015
Сообщений: 1,019
Записей в блоге: 1
01.04.2016, 07:07
Катюша, вы очень милы, но вам всего 17. А здесь сидят дяденьки под 40+
0
 Аватар для Olej
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
01.04.2016, 08:59
Цитата Сообщение от katusha17 Посмотреть сообщение
Текст задания следующий:
Процесс 1 открывает файл и порождает потомка 2. Процесс 2 пишет N байт в файл по одному байту, процесс 1, не дожидаясь окончания процесса-потомка, начинает читать из файла по одному байту и выводит их на экран. Процесс 1 завершается, когда достигнут конец файла.
Вообще то, задание странное:
- если файл находится в процессе записи, да ещё буферизированной записи в дисковом кэше, то о корректном EOF говорить не приходится...
- а если задачу писать корректно, с блокировками доступа к файлу и синхронизацией ... через fcntl((), например, и контролем состояния файла завершения записи (через fstat(), например) - то это уже и не такая простая учебная задача становится.

Интересно, где это такие задачи придумывают?
0
 Аватар для katusha17
2 / 2 / 3
Регистрация: 04.03.2014
Сообщений: 75
25.04.2016, 12:03  [ТС]
Там в конце задания ещё приписка была - объяснить полученный результат. Я так понимаю - это и есть объяснение, или есть другие причины?
Цитата Сообщение от Olej Посмотреть сообщение
Вообще то, задание странное:
- если файл находится в процессе записи, да ещё буферизированной записи в дисковом кэше, то о корректном EOF говорить не приходится...
З.Ы. Родительский процесс не завершается.

Готовый рабочий кодик вот:
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
42
43
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
#define N 50
 
int main(void)
{
    char buf[] = {'a', 'b', 'c', 'd', 'e'};
    int read_ch, i, st;
    char ch;
    int pid2;
    FILE *file;
    switch (pid2 = fork()) {
    case -1:
        printf("Error fork!\n");
        exit(1);
    case 0:
    file = fopen("file.txt", "w+");
        for(i = 0; i < N; ++i){
            printf(" w \n");
            fputc(buf[i % 5], file);
            fflush(file);
            sleep(1);
        }
        printf("\n\nChildren %d %d\n", getpid(), pid2);
        break;
    default:
     file = fopen("file.txt", "r");
        while(i < N){
            sleep(1);
            read_ch = fgetc(file);
            if(read_ch != EOF){
                i++;
                printf("%c\n", (char)read_ch);
            }
        }
        wait(&st);
        printf("\nParent %d %d\n", getpid(), pid2);
    }
    close(file);
    exit(0);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.04.2016, 12:03
Помогаю со студенческими работами здесь

Порождение процесса и сортировка
Нужно породить процесс и в нем отсортировать значения утилитой sort. Пишу: #include &lt;stdio.h&gt; #include &lt;unistd.h&gt; ...

Порождение нового процесса и работа с ним
Помогите разработать программу, вычисляющую плотность распределения Пуассона с параметром lambda в точке k (k - целое) по формуле...

Порождение процесса - найти ошибку в коде
такое задание: Главный процесс создает дочерний процесс, записывает ему в канал текстовоое сообщение, дочерний процесс распечатывает это...

Чтение/запись памяти процесса
Какие есть способы чтения или записи в память процесса ? Я нашел только дефолтный readprocessmemory/writeprocessmemory. Можно ли это...

Чтение из памяти стороннего процесса и запись в файл массива типа doouble
Здравствуйте. Помогите кто может) В общем надо написать прогу которая будет читать мой массив из Visual Studio 2010 во время отладки (то...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru