Я пишу простую интерактивную программу оболочки на C++. Он должен работать simalary до sh
или bash
.C++ простая интерактивная приглашение командной оболочки при перенаправлении ввода
Программа выглядит следующим образом (упрощенно как можно больше):
#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
(перенаправление ввода) производит выход с оболочкой подсказывает, как это:
prompt> echo "something"
prompt> echo "something else"
prompt> date
prompt> exit
Это действительно производит правильный вывод (только выход входной строки в данном случае), но это 'poluted' с подсказками.
Есть ли какой-то довольно простой способ избавиться от него (если я делаю то же самое, например, bash
нет вывода на выходе) при перенаправлении ввода? Заранее спасибо
http://linux.die.net/man/3/isatty –