我正在编写自己的简单Shell,目前正在考虑从用户获取输入(命令)。

我编写了以下原型:

 while(1) {
        printf("gsh> ");
        fflush(stdout);
        total_len = 0;
        do {
            len = read(0, buffer,  MAX_LENGTH_OF_COMMAND-total_len -1);
            total_len+= len;
            } while( buffer[total_len-1] != '\n');
        buffer[total_len]='\0';
        parse(buffer);
    }


而且这种灵魂似乎使我最好,但我不确定。所以,我要的是正确的建议和建议。

提前致谢。

最佳答案

您可能宁愿使用getchar(),这样您就可以捕获向上和向下箭头(通常对shell历史记录有用)之类的按键,这些按键在按下时会产生多个字符。您可能还希望将终端设置为原始终端,以获取非阻塞输入。

#include <termios.h>
#include <unistd.h>
int main()
{
  struct termios oldt;
  struct termios newt;

  tcgetattr(0, &oldt);
  memcpy(&newt, &oldt, sizeof(newt));
  cfmakeraw(&newt);
  tcsetattr(0, TCSANOW, &newt);
  /* your read function ...*/

  /* before exiting restore your term */
  tcsetattr(0, TCSANOW, &oldt);
}

关于c - 从用户那里获取输入。 shell ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32667405/

10-11 21:12