"); -6ren">
gpt4 book ai didi

c - 获取用户的输入。壳

转载 作者:行者123 更新时间:2023-11-30 15:17:09 28 4
gpt4 key购买 nike

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

我编写了以下原型(prototype):

 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 - 获取用户的输入。壳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32667405/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com