Прочитать файл в k процессов

158
03 ноября 2018, 16:10

Интересует такой вопрос: как прочитать файл, представленный потоком(std::ifstream) используя k процессов с использованием fork()? Знаю как обработать его в k потоков, разделив файл(поток) на блоки кратные k потокам.

Answer 1

Нечто вроде:

int pid;
long offset;
long SegmetSize = ??; // Размер сегмента файла для одного процесса
// Мы в родительском процессе - открываем файл
FILE *f;
f = fopen(...);
if (f == NULL) ...
// Запускаем дочерние
for (j=0; j<k; j++) {
    pid = fork();
    if (pid < 0) {
        // Обрабатываем ошибку
    } else if (pid > 0) {
        // Мы в родительском процессе - продолжаем запуск
        continue;
    } else {
        // Мы в дочернем процессе - позиционируемся на нужный участок файла
        offset = j * SegmetSize;
        rc = fseek(f, offset, SEEK_SET);
        // И начинаем обработку с этой точки
        while (...) {
            fread(..., f);
            // Что-то делаем
        }
    }
}
READ ALSO
Глобальный хук на мышь

Глобальный хук на мышь

Консольное приложение:

346
C++ Загрузки статической библиотеки.

C++ Загрузки статической библиотеки.

Добрый день я являюсь новичком в области C++ и тут возникла интересная проблема совместимости новых библиотек со старыми ОСНапример есть...

163
Как импортировать в .odt? Qt

Как импортировать в .odt? Qt

Как лучше импортировать вodt из Qt? Есть много примеров как в Word импортировать, но в

143
Проверка корректности ввода

Проверка корректности ввода

В модальном окне есть два поля ввода QLineEditВ первом вводится количество элементов и на него установлен QIntValidator, то есть кроме целого числа...

163