是否可以从node.js中的stdin同步读取?因为我正在用JavaScript编写JavaScript编译器,所以很有趣。Brainfuck支持需要同步执行的读取操作。
我尝试了这个:
const fs = require('fs');
var c = fs.readSync(0,1,null,'utf-8');
console.log('character: '+c+' ('+c.charCodeAt(0)+')');
但这只会产生以下输出:
fs:189
var r = binding.read(fd, buffer, offset, length, position);
^
Error: EAGAIN, Resource temporarily unavailable
at Object.readSync (fs:189:19)
at Object.<anonymous> (/home/.../stdin.js:3:12)
at Module._compile (module:426:23)
at Module._loadScriptSync (module:436:8)
at Module.loadSync (module:306:10)
at Object.runMain (module:490:22)
at node.js:254:10
我不知道什么时候出现,但这是向前迈出的有益一步:http :
//nodejs.org/api/readline.html
var readline = require('readline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false
});
rl.on('line', function (cmd) {
console.log('You just typed: '+cmd);
});
现在,我可以一次从stdin中读取行。快乐的时光。
问题内容: 我想阅读Go程序的原始内容。例如,如果我这样做了,我希望可以访问“ test stdin”。我尝试从中读取,但是如果其中没有任何内容,则它将等待输入。我也尝试过先检查大小,但是即使输入传入也为0。 我能做什么? 问题答案: 我认为您的问题本身没有明智的答案,因为没有“初始标准输入”之类的东西。类似于Unix的操作系统和Windows都实现了“标准流”的概念,它的工作原理如下(简化):创
问题内容: 是否可以在正在运行的nodejs脚本中侦听传入的击键?如果我使用并监听其事件,则输入将被缓冲到下一个换行符,如下所示: 运行此,我得到: 我想要看的是: 我正在寻找一个等效于例如ruby的nodejs 这可能吗? 问题答案: 如果切换到原始模式,则可以通过这种方式实现:
我想从STDIN读取输入。我在C中使用fork()方法。我有子进程和父进程。我的输入是多行的。父进程只等待子进程终止,子进程只读取第一行,子进程终止后,父进程继续读取。我想要打印行。例如;输入-> null 子进程打印“星期一”,父进程打印“星期二”和“星期三”。一旦到达文件结尾,程序就会终止。 ./program
问题内容: 在读取文件的一部分后,我尝试在文件上调用进程。例如: 如果我在执行subprocess.call之前不从中读取任何内容,则此方法很好,但如果我从中读取了任何内容,则子流程将看不到任何内容。这是使用python 2.7.3。我在说明此行为的文档中找不到任何内容,而且对子流程源的(非常)简短的浏览没有发现原因。 问题答案: 如果您不加缓冲地打开文件,那么它将起作用: 模块在文件描述符级别(
问题内容: 当有字符可用时,是否有一种优雅的方法来触发事件?我想避免投票。 问题答案: 您将必须创建一个单独的线程以阻止读取,直到有可用的线程为止。 如果您不想实际消耗输入,则必须用内部缓冲区包装它,读入缓冲区,然后喊叫,并在要求输入时从缓冲区返回数据。 您可以这样解决:
问题内容: 我正在使用以下命令行调用来处理带有node的文本文件: 文件的每一行都需要单独处理,但是一旦处理完,输入行可能会被忘记。 使用标准输入的数据侦听器,我得到了按字节大小分块的输入流,因此进行了设置。 但这似乎草率。必须在行数组的第一项和最后一项周围进行按摩。有没有更优雅的方式做到这一点? 问题答案: 您可以使用readline模块逐行从stdin进行读取: