我正在编写自己的简单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/