【发布时间】:2016-01-15 07:55:25
【问题描述】:
我正在用 C++ 编写一个简单的交互式 shell 程序。它应该与sh 或bash 类似。
程序看起来像这样(尽可能简化):
#include <iostream>
#include <string>
int main(){
std::string command;
while (1){
std::cout << "prompt> ";
std::getline(std::cin, command);
std::cout << command << std::endl;
if (command.compare("exit") == 0) break;
}
return 0;
}
它可以根据需要与人机交互。提示,用户写命令,shell执行。
但是,如果我像这样./shell < test.in(重定向输入)运行 shell,它会产生带有这样的 shell 提示的输出:
prompt> echo "something"
prompt> echo "something else"
prompt> date
prompt> exit
它确实产生了正确的输出(在这种情况下只是输出输入字符串)但是它被提示“污染”了。
重定向输入时是否有一些相当简单的方法来摆脱它(如果我对例如bash 做同样的事情,输出中没有提示)?
提前谢谢你
【问题讨论】: