将字符打印到stdin,读取行读取

时间:2015-10-21 01:35:50

标签: c gnu readline

我想打印readline读取的每个字符。 目前,我可以在完全阅读之后将所有内容打印出来。 这是针对正在编写的shell。

1 个答案:

答案 0 :(得分:0)

readline()是一个阻塞函数,等待一个完整的行。

只需在循环中使用read()即可。如果没有新字符,read()将返回0,如果存在字符,它将返回1(如果自上次调用read()以来n个字符在stdin中,则返回n,并且提供足够大的缓冲区)。 通常,标准输入具有为其保留的文件描述符0,因此您的代码可能如下:

char buf[1];
int i;

while(1) {
   i = read(0, buf, 1);
   if (i>0)
    {
    // process character
    }
}