Форум программистов, компьютерный форум CyberForum.ru

Параллельный запуск процессов с помощью fork(). Проверить код - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Графы: матрицы соединений и матрицы связей http://www.cyberforum.ru/cpp-beginners/thread1066009.html
Графом называется совокупность точек ( узлов), некоторые из которых соединены между собой направленными ребрами. Граф , состоящий из n узлов можно описать двумя матрицами порядка n : матрицей соединений и матрицей связей. Элемент матрицы соединений a = 1, если граф содержит ребро направлено от узла i к узлу j и a = 0 в другом случае . Элемент матрицы связей b = 1, если с узла i можно попасть в...
C++ Найти среди простых чисел, попадающих в этот промежуток, такое число, у которого сумма цифр максимальная 1.В функцию передаются границы числового интревала. Найти среди простых чисел, попадающих в этот промежуток, такое число, у которого сумма цифр максимальная. 2. Считать строку и вывести на экран только предложения, не содержащих запятых. Добавлено через 1 час 3 минуты Проверьте, пожалуйста как я пытался делать первую программу #include <stdio.h> #include <conio.h> #include <math.h> bool... http://www.cyberforum.ru/cpp-beginners/thread1066006.html
C++ Одна программа записывает данные в файл, а другая их считывает и выводит на экран
Задача состоит в том чтоб одна программа записала данные в файл а другая их считала и вывела на экран как полагается, запись и считывание через бинарный режим должны осуществляться. Имеется класс object и у него два класса наследника triangle и uravn. int main(int argc,char* argv) {FILE* F; F=fopen(argv,"wb+"); char p; cout<<"vvedite kol-vo elementov"; int N; cin>>N; object** A; A= new...
Шаблонный класс очереди. Выводит сначала все индексы, потом все элементы C++
#include <iostream> #include <conio.h> using namespace std; const int SIZE=100; template<class X> class queue{ X q; int sloc, rloc;
C++ Строка не передаётся в функцию http://www.cyberforum.ru/cpp-beginners/thread1065984.html
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; str_while(char* str) { int i=0; while(str)
C++ Магия со статическими массивами Предисловие: на форуме подняли топик http://www.cyberforum.ru/cpp-beginners/thread1065365.html , в голове сразу мелькнула мысль написать шаблонную функцию, которой не надо было-бы передавать размерность массива (на сколько я знаю это можно сделать если массив статический, а не выделяется динамически). Ближе к делу: по быстрому набросал следующий код (рабочий): #include <iostream>... подробнее

Показать сообщение отдельно
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
08.01.2014, 20:24  [ТС]     Параллельный запуск процессов с помощью fork(). Проверить код
Цитата Сообщение от 0x10 Посмотреть сообщение
Есть несколько моментов, которые смущают.
1. wait ждет изменения статуса одного из дочерних процессов. Следовательно, дождаться всех так просто не выйдет. Нужно что-то вроде сохранения pid всех дочерних процессов и вызов функции waitpid для каждого из них.
2. Проблема - все процессы параллельно пытаются писать в один и тот же канал. При чтении у родительского процесса в результате может получиться каша. Мб имеет смысл создать канал для каждого процесса, а затем мультиплексировать (см select).

Ну и мб стоит озвучить задачу - возможно, она решается чем-нибудь полегче запуска кучи тяжелых процессов.
да задача такая: запустить десяток процессов именно параллельно, потом дождаться завершения всех процессов(в данном случае ls, а по заданию разные названия их считываются из файла - это я сделал) при это через pipe родительский процесс (который ожидает завершения всех) должен получить информацию из потока вывода процесса и потока ошибок (в том порядке в котором они будут завершаться т.е. порядок каждый раз разный).
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru