Linux 传递命令行参数的困难
我想通过使用cat命令读取另一个文件,将命令行传递给我的c程序,如下所示:Linux 传递命令行参数的困难,linux,Linux,我想通过使用cat命令读取另一个文件,将命令行传递给我的c程序,如下所示: cat data | ./file 文件数据的内容如下所示: abc def ghi jkl mno pqr stu vwx yz 文件.c的代码是 #include <stdio.h> int main( int args, char * argv[] ) { int i = 0; for( i; i < args; i++ ) { printf(
cat data | ./file
文件数据的内容如下所示:
abc def ghi jkl mno pqr stu vwx yz
文件.c的代码是
#include <stdio.h>
int main( int args, char * argv[] )
{
int i = 0;
for( i; i < args; i++ )
{
printf(argv[i]);
printf("\n");
}
}
它只显示文件名,不显示a内容。我做得对吗 您应该尝试以下方法:
./file $(cat a)
您应该尝试以下方法:
./file $(cat a)
管道被视为
STDIN
fd,而不是命令行参数
您可能需要cat a | xargs./file
leetom@leetoms-MBP:~$ cat aa.txt
aaa bbb cc
leetom@leetoms-MBP:~$ cat aa.txt | xargs ./a.out
./a.out
aaa
bbb
cc
管道被视为
STDIN
fd,而不是命令行参数
您可能需要cat a | xargs./file
leetom@leetoms-MBP:~$ cat aa.txt
aaa bbb cc
leetom@leetoms-MBP:~$ cat aa.txt | xargs ./a.out
./a.out
aaa
bbb
cc
您需要使用
cin
从标准输入流读取管道输入,如中所示。您的文件将成为:
#include <iostream>
#include <string>
int main( int args, char ** argv )
{
std::string lineInput;
while (std::cin >> lineInput) {
std::cout << lineInput << std::endl;
}
}
您需要使用
cin
从标准输入流读取管道输入,如中所示。您的文件将成为:
#include <iostream>
#include <string>
int main( int args, char ** argv )
{
std::string lineInput;
while (std::cin >> lineInput) {
std::cout << lineInput << std::endl;
}
}
这样,它工作得很好。但是我想用上面提到的方法来做。这样做,效果很好。但是我想用上面提到的方法。