bash
コマンド (Homework)をシミュレートするために、多くの反復を行っています。
コードは問題なく動作しますが、問題は、入力を数回繰り返した後、プログラムでバッファの問題が発生し始めることです。\n
すべてのEnter
ヒットと関係があるのではないかと思います。
たとえば、コードは次のように始まります。
#define BUFFER 4096
#define RUN_FOREVER 1
#define ERROR_SIGN -1
#define TRUE 1
#define FALSE 0
int main(int argc , char * argv[] )
{
char input[BUFFER];
//Get always a command line from the user.
while(RUN_FOREVER)
{
if (isatty(0))
{
// input is from terminal
// need to put something here
}
char **separatedFormAmpersand ;
int ampersandsCtr = 0, k=0,r=0;
char *stringBeforeAmpersand = NULL;
printf("$ ");
memset(input, '\0', BUFFER);
char ch;
scanf("%[^\n]",input);
scanf("%c",&ch);
if(0 == strcmp(input, "exit"))
break;
//Separate the command according to the "&".
stringBeforeAmpersand = strtok( input, "&");
... // more code (quite a lot , frankly)
ここで、ユーザーが次の入力をヒットした場合:
ls Debug/ | grep r
ls >> file.jer & ls & ls & ls
ls >> file.jer
次々と、ls
入力番号を押したときにコードがコマンドを認識しません3
。
コードの 1 回の実行で各入力を入力すると、すべてが完全に機能します。
バッファをきれいにする方法はありますか?たぶんfflush
?
ありがとう!