Я пишу в программе, чтобы отец попросил пользователя вставить номер для вычисления факториала числа. Это число рассчитывается в factorial.cC Как получить результат другой программы с функциями и трубами exec
Так что я думаю, что мне нужно сделать, это:
-Father задать номер для пользователя:
-Factorial.c отсчитать количество и рассчитать количество
-Factorial.c написать число вычисляется
-do dup2, чтобы перенаправить вывод
// 2 Pipe and Fork created
if(x == 0){ //Father
close(p1[0]);
write(p1[1],&number_by_keybord, BUFFER);
close(p1[1]);
close(p[1]);
dup2(p[0],0); //Read the number returned by factorial.c
read(p[0], &num_factorial,BUFFER);
printf("Pipe: factorial %d\n", num_factorial);
close(p[0]);
wait(NULL);
}else{
execlp("./factorial", "factorial", NULL);
perror("Exec error\n");
}
А теперь factorial.c
void main(){
read(0,&num,sizeof(int));
//Number calculated
write(1,&result,sizeof(int));
return 0;
}
Но когда я выполнить программу зависаний или просто поставить случайное число расчетливый
Существует любой проблема- с dup2? я думаю, чтобы получить правильный результат, я должен сделать dup2 (, 0), а в факториале мне нужно прочитать и написать
Спасибо!
В чем вопрос? Я не вижу здесь никакого вопроса. Вопросы заканчиваются вопросительным знаком (***? ***) – abelenky
Вы не представили достаточно кода для дублирования проблемы. –
В остальном код его просто метод для создания труб и вилок, попросите номер для пользователя (number_by_keybord) и для вычисления факториала в factorial.c ... Возможно, мне нужно больше кода для использования dup и чтобы получить результат factorial.c ... но я думаю, я не нуждаюсь. Предложение приемлемо? – Joseph