如何同步从stdin读取单个字符?

时间:2013-11-25 05:42:25

标签: node.js

换句话说,什么是C的getchar函数的node.js等价物? (等待输入,当它得到它时,它返回字母的字符代码,后续调用从stdin获取更多字符)

我尝试搜索谷歌,但没有一个答案是同步的。

2 个答案:

答案 0 :(得分:0)

我只想读一个字符,然后退出。

process.stdin.resume();
process.stdin.on(
    'data',
    function (chunk) {
        // process.stdout.write('line read: ' + chunk);
        process.stdout.write('char read: ' + chunk[0]); // gives ascii 97 when a is typed.
        process.exit(0);
    }
);

要以同步方式读取char,请将上述功能包装在新的Promise(..)结构中,请参阅:https://github.com/manoharreddyporeddy/my-programming-language-notes/blob/master/my-nodejs-programming-notes.js#L96

答案 1 :(得分:0)

这是基于getChar的fs.readSync的简单实现:

fs.readSync(fd,缓冲区,偏移量,长度)

与其他答案不同,这将是同步,仅从标准输入中读取一个字符,并被阻塞,就像C的{ {1}}:

getchar