Использование канала для передачи целочисленных значений между родителем и ребенком

Я немного запутался в том, как правильно использовать pipe () для передачи целочисленных значений между двумя процессами.

В своей программе я сначала создаю трубу, а затем разветвляю ее. Я предполагаю, что у меня естьДва" трубы тогда?

Из того, что я понимаю, это мое назначение. Мой родитель проходит через цикл проверки целочисленного значения "i" для определенной операции увеличивает переменную count и сохраняет значение в массив. После каждой проверки мой родитель должен передавать целочисленное значение "i" моему ребенку через трубу. Затем мой ребенок использует это целочисленное значение, проверяет значение и должен увеличить переменную count и сохранить результат в массиве [shared?]. В конце концов; ребенок должен вернуть егоокончательный отсчет для родителя, который затем распечатывает два подсчета, и "Общий" массив .-> Я '

я не уверен, что мне нужно иметь общий массив или сохранить результаты вообще. Мне может понадобиться только счет - домашняя работа была неоднозначной, и яЯ жду ответа от профессора. Также; я могу даже сделать общий массив между процессами? Это звучит как начало какой-то проблемы для меня .->

 Вот мои вопросы: один; как использовать трубы для целых чисел? Я'видел их только для массивов символов и предыдущих ответовкажется, что это возможно или законно ..? Я'Я не уверен. Там не было никакого разрешения, которое я мог бы найти на нем .->

 Как мне использовать однонаправленный канал для передачи целых чисел ребенку? И дать ребенку что-нибудь вернуть? Я'я не уверен, как яЯ могу ... различать две трубы. Я делаю "знать» [или думаю, я знаю], что я должен закрыть одну неиспользованную часть каждой трубы, чтобы избежать "Некая расплывчатая проблема ".

Извините за глупые вопросы; У меня нетЯ не изучал процессы (кроме вилки) или трубы (вообще) в этом классе - так что яЯ не совсем уверен, с чего начать!

Вот часть моего кода - этоэто не красиво, и это нея не работаюне ожидаю этого. Это'больше заполнителя оболочки. Как только я выясню, как использовать трубу - яd Возможно, смысл кода имеет смысл.}

int main(void)
{
int fd[2];
pid_t childpid;
pid_t parentpid;
int i;
int threecount = 0;
int fivecount = 0;;
int results [MAXSIZE];

parentpid = getpid(); //Get current process ID number

pipe(fd);
childpid = fork(); 

if(childpid == 0){
close(fd[0]); //Closing this for some other reason

}
int j = 0;

if(childpid > 0)
close(fd[1]); //Closing this for some reason


if( childpid == -1 )
{
    perror("Failed to fork\n");
    return 1;
}
if (childpid > 0)
{
    for(i = 1; i < MAXSIZE;i++)
    {
        if(i % 5 == 0)
        {
            fivecount++;
            i = results[j];
            j++; 
            wait(NULL);
        }
    }
}
else if (childpid == 0)
    {
        if(i % 3 == 0) //This i here should probably be the i value above, piped to the child
        {
            threecount++;
            i = results[j];  //This should be part of th pipe
            j++;    //Trying to keep count of that shared array, not really the right way to do it though.
        }

    }
    printf("%d  %d  \n", fivecount,threecount);
    return 0;

Ответы на вопрос(1)

Ваш ответ на вопрос