为什么我无法打印传递给我的程序的第一个参数?

3

我用C语言写了一个简单的代码:

#include <stdio.h>
int main( int argc, char* argv[] ) {
    printf( "Hello, just wanted to say: %s.\n", argv[1] );
    return 0;
}

我从中制作了两个程序 - app1app2

现在,我正在尝试使用管道技术:

./app1 Bye | ./app2

并且输出放入%s中,实际输出为(null)而不是预期的“Hello,”。 为什么?

1
您正在查看 ./app2 的输出。./app1 的输出在您的示例命令中不相关。 - Brandin
1个回答

10

您好像误解了管道的工作原理。当您像这样使用管道时,app1 的输出被用作 app2 的标准输入(stdin),但不是 app2 的命令行参数。

就像这样:

stdin->app1->stdout >----------> stdin->app2->stdout
                        pipe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接