Как реализовать программу и использовать неименованные каналы для обмена информацией между процессами?

Написал код предоставленный заданием, но совсем не понимаю как можно его подогнать для работы между неименованными каналами в 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;
    }
}

Ответы (0 шт):