Интересует такой вопрос: как прочитать файл, представленный потоком(std::ifstream) используя k процессов с использованием fork()? Знаю как обработать его в k потоков, разделив файл(поток) на блоки кратные k потокам.
Нечто вроде:
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);
// Что-то делаем
}
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Добрый день я являюсь новичком в области C++ и тут возникла интересная проблема совместимости новых библиотек со старыми ОСНапример есть...
Как лучше импортировать вodt из Qt? Есть много примеров как в Word импортировать, но в
В модальном окне есть два поля ввода QLineEditВ первом вводится количество элементов и на него установлен QIntValidator, то есть кроме целого числа...