-1

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

ありがとう!

4

2 に答える 2