尝试响应程序的输出,并且这应该得到答案,但它不起作用。这是我的代码:
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;
}
提前致谢
答案 0 :(得分:0)
最后,我的错误不是在写入中写入换行符,因此没有完全读取被调用的程序。
int main() {
char *args[] = {"./a.out", 0};
int fd1[2];
if(pipe(fd1) == -1) {
perror("error pipe\n");
return;
}
int pid = fork();
if (pid == 0) {
dup2(fd1[0], 0);
close(fd1[0]);
close(fd1[1]);
execve("./a.out", args, NULL);
} else {
write(fd1[1], "5\n", 2);
int status;
wait(&status);
}
return 0;
}