Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在bash中使用程序A的输出作为B的输入?_C_Bash - Fatal编程技术网

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