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

inf*_*ous 3 c bash arguments

我在c中做了一个简单的代码:

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

并从中制作了两个程序 - app1app2.

现在,我正在试验管道:

./app1 Bye | ./app2
Run Code Online (Sandbox Code Playgroud)

并输出投入%s(null),而不是预期的"你好".为什么?

Yu *_*Hao 10

你似乎误解了管道是如何工作的.当您使用的管道像你这样,输出app1作为stdinapp2,但不是在命令行参数app2.

就像这样:

stdin->app1->stdout >----------> stdin->app2->stdout
                        pipe
Run Code Online (Sandbox Code Playgroud)