将文件的内容重定向为可执行文件linux的标准输入

redirecting contents of file as standard input to executable file linux

本文关键字:可执行文件 linux 标准输入 文件 重定向      更新时间:2023-10-16

所以我在ssh shell中有问题。我有一个proj1.cpp文件,该文件在文本中从标准输入中读取为" Word "的字符串。之后,我使用makefile将其编译到可执行文件(ProJ1.x)中。然后,在SSH Shell中,我执行一个命令,例如" proj1.x&lt test0",将文件" test0"的内容重定向到" proj1.x"的标准输入(基本上是将文本放入test0中的标准输入中)" Word ")。它运行良好,但似乎在阅读大约30个左右的角色后,它似乎切断了。但是,当我简单地使用代码块或其他任何" proj1.cpp"运行" proj1.cpp"时,一切正常(对于文本线,我输入它的大小是什么),所以我不知道问题是什么。

我认为问题是我正在使用" getline(cin,word)";从标准输入到名为" word"的字符串的1行文本中读取,但是我要重定向的文件的某些内容有几行。我将使用什么代码来读取从标准输入中阅读所有文本(我想直到程序终止?),因此,当我将文件重定向到标准输入时,它会读取所有内容并将其上传到字符串" Word "。也许有一个循环?或者,如果您认为这是其他问题,请发表评论。

我现在正在使用的内容:

string word;
getline(cin, word);

我的makefile:

proj1.x: proj1.cpp
    $(CXX) -o $@ $<
clean: 
    rm -f *.o *.x core.*

要收集所有内容,您可以使用while循环或其他一些变体,例如for循环:

std::string content;
for (std::string line; std::getline(std::cin, line); )
{
    content += line;
}