Форум программистов, компьютерный форум 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
09.01.2014, 14:14  [ТС]     Параллельный запуск процессов с помощью fork(). Проверить код
Цитата Сообщение от 0x10 Посмотреть сообщение
Ну можно в принципе повесить обработчик на SIGCHILD и там уже определять какой процесс завершился, и только в этом случае читать из соответствующего ему канала, если требуется сохранить порядок...
дак всё же, если запускать процессы таким образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
pid_t pid[10];
pid[0] = fork();
if(pid[0] == 0)
{}
else {}
pid[1] = fork();
if(pid[1] == 0)
{}
else {}
pid[2] = fork();
if(pid[2] == 0)
{}
else {}
они будут работать "параллельно" или нет?
и второе, имеется вот такая привязка:
C++
1
2
 signal (SIGCHLD, sig_chld); //привязка конкректного 
//сигнала к функция обработки сигнала
вот функция обработки сигнала
C++
1
2
3
4
5
6
7
void sig_chld(int signo){
    pid_t pid;
    int stat;
    while( ( pid = waitpid(-1, &stat, WNOHANG) ) > 0 ){
 
    }
}
что надо подавать в качестве параметра(int signo) в функцию? и правильно ли написан обработчик? можно ли уже после while получать данные с дочернего процесса через pipe? Заранее спасибо
 
Текущее время: 10:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru