C 如何在bash中使用程序A的输出作为B的输入?
也就是说,C 如何在bash中使用程序A的输出作为B的输入?,c,bash,C,Bash,也就是说,B有一个请求输入的get,a有一个输出某物的put A和B都是C程序 如何在bash中使用程序A的输出作为B的输入 我尝试的是/A |/B和/B |/A,但两者都不起作用 更新 A的stdout中的内容是如何进入B的stdin的/A |/B?以下是一个示例: /* a.c */ #include <stdio.h> int main() { puts("This is a string"); return 0; } 管道工作的主要原则是向标准输出写入数据,
B
有一个请求输入的get
,a
有一个输出某物的put
A
和B
都是C程序
如何在bash中使用程序A的输出作为B的输入
我尝试的是/A |/B
和/B |/A
,但两者都不起作用
更新
A的stdout中的内容是如何进入B的stdin的
/A |/B
?以下是一个示例:
/* a.c */
#include <stdio.h>
int main() {
puts("This is a string");
return 0;
}
管道工作的主要原则是向标准输出写入数据,然后读取标准输入。如果您需要更多帮助,请告诉我。您必须说明A和B是什么
puts
和gets
并不是真正的bash
命令puts
和gets
是c语句。从stdin读取/输出gets和puts in c。是否有任何类型的错误消息显示出来,或者只是默默地失败了?程序B有缺陷;其他任何使用get()
的程序也是如此。始终使用fgets()
(或其他一些函数,您可以在其中指定可用于接收数据的缓冲区大小)。切勿使用get()
。甚至在玩具程序中也没有。忘记存在get()
。将库中的gets()
替换为一个中止的函数,以便使用它的任何程序在发生任何损坏之前都能在控制下崩溃。修复程序B!你能详细说明一下stdout中的东西是如何进入stdin的吗?@compile fan,很多事情都是在内部发生的。为了简化,一个程序有3个标准流,输入用标准输入(来自键盘),输出用标准输出(在屏幕上),错误用标准输出(在屏幕上)。您可以将流更改为指向不同的位置。。。类似于使用“>”将标准输出重定向到文件。内部发生的是a.out的输出流被重定向到b.out的输入流。
/* b.c */
#include <stdio.h>
int main() {
char line[1024];
fgets(line,1023,stdin);
printf("b.c: %s",line);
return 0;
}
./a.out | ./b.out