0
Попробуйте ответить на вывод программы и что это должно получить ответы, но это не сработает. Вот мой код:Как объединить трубку с одним execve
int main() {
char *args[] = {"./a.out", 0};
int fd1[2], fd2[2];
if(pipe(fd1) == -1 || pipe(fd2) == -1) {
perror("error pipe\n");
return;
}
int pid = fork();
if (pid == 0) {
dup2(fd2[0], 0);
close(fd2[1]);
execve("./a.out", args, NULL);
} else {
dup2(fd1[0], 0);
close(fd1[0]);
write(fd2[1], "23", 2);
write(fd2[1], "A", 1);
int status;
wait(&status);
}
return 0;
}
Заранее спасибо
Ну, этот код, безусловно, ошибочен, вы создаете 2 трубы, но используете только один из них. Но без вашего объяснения ясно, что ** вы хотите сделать, невозможно сказать вам, как это сделать правильно. –
Я пробовал только с трубой, но у меня также не получилось. Я хочу, чтобы, если программа спросила, какой у меня возраст (например), отвечаю на мой возраст. – Javi
, так что вам нужно ждать подсказки от вашего ребенка? то вам нужно 2 трубы, проведите один к stdin, а другой - к stdout перед 'exec()' в программе. –