Как реализовать программу и использовать неименованные каналы для обмена информацией между процессами?
Написал код предоставленный заданием, но совсем не понимаю как можно его подогнать для работы между неименованными каналами в UNIX. Вроде понимаю, что нужно для этого использовать fork() и pipe. Но представления нет совсем.
Код программы и суть ее: Определить, является ли матрица А магическим квадратом. Входные данные: целое положительное число n, массив чисел А размерности nxn. Матрица является магическим квадратом, когда равны между собой суммы всех строк и суммы всех столбцов. Использовать n или n+1 процессов для решения задачи.
#include <sys/types.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int N;
int main()
{
setlocale(LC_ALL, "Russian");
cout << "Введите N: ";
cin >> N;
if ((N >= 2) && (N <= 10))
{
int** matrix = new int* [N]; //создаем динамическую матрицу размером NxN, которая и будет нашим квадратом
for (int i = 0; i < N; i++) {
matrix[i] = new int[N];
}
int* solve = new int[N + N + 2]; //создаем одномерный динамический массив всевозможных сумм линий элементов в квадрате
for (int i = 0; i < (N + N + 2); i++) {
solve[i] = 0;
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++)
{
cout << "Введите элемент матрицы с координатами " << i + 1 << "," << j + 1 << " ";
cin >> matrix[i][j];
}
}
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
cout.width(4);
cout << matrix[i][j];
}
cout << endl;
}
for (int s = 0; s < N; s++) {
for (int j = 0; j < N; j++)
{
solve[s] += matrix[s][j]; //поиск сумм элементов всех строк и столбцов
solve[N + s] += matrix[j][s];
}
}
for (int i = 0; i < N; i++) {
solve[N + N] += matrix[i][i]; //поиск сумм элементов главной и побочной диагонали
solve[N + N + 1] += matrix[i][N - 1 - i];
}
cout << endl;
for (int i = 0; i < (N + N + 2); i++) {
cout << solve[i] << " "; //вывод всех сумм на экран
}
cout << endl;
int cor = 0; //вывод
int incor = 0;
for (int i = 0; i < (N + N + 1); i++) {
if (solve[i] == solve[N + N + 1])
cor++;
else
incor++;
}
if (cor > incor)
cout << "Данная матрица является магическим квадратом!" << endl;
else
cout << "Данная матрица не является магическим квадратом!" << endl;
}
else {
cout << "Введите другое число" << endl;
}
}