是否可以从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)+')');
Run Code Online (Sandbox Code Playgroud)
但这只产生这个输出:
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
Run Code Online (Sandbox Code Playgroud) 情况:
我想从stdin控制台获取密码- 而不回显用户输入的内容.是否有类似getpasswdGo的功能?
我尝试了什么:
我尝试过使用syscall.Read,但它回应了所输入的内容.
我想阅读用户使用C程序输入的名称.
为此,我写道:
char name[20];
printf("Enter name: ");
gets(name);
Run Code Online (Sandbox Code Playgroud)
但是使用gets不好,那么更好的方法是什么?
我想做这样的事情:
$ [mysql query that produces many lines] | php parse_STDIN.php
Run Code Online (Sandbox Code Playgroud)
在parse_STDIN.php文件中我希望能够从stdin逐行解析我的数据.
我正在尝试phantomjs使用节点生成外部进程child_process,然后在初始化后将信息发送到该进程,这可能吗?
我有以下代码:
var spawn = require('child_process').spawn,
child = spawn('phantomjs');
child.stdin.setEncoding = 'utf-8';
child.stdout.pipe(process.stdout);
child.stdin.write("console.log('Hello from PhantomJS')");
Run Code Online (Sandbox Code Playgroud)
但我在stdout上唯一得到的是phantomjs控制台的初始提示.
phantomjs>
Run Code Online (Sandbox Code Playgroud)
所以似乎child.stdin.write没有产生任何影响.
我不确定我是否可以在初始产卵时向phantomjs发送更多信息.
提前致谢.
我有一些脚本,用参数工作,他们工作得很好,但我想他们能够从标准输入读取,例如从一个管道,一个例子,假设这就是所谓的读:
#!/bin/bash
function read()
{
echo $*
}
read $*
Run Code Online (Sandbox Code Playgroud)
现在这适用read "foo" "bar",但我想用它作为:
echo "foo" | read
Run Code Online (Sandbox Code Playgroud)
我该如何做到这一点?
如何让grep 从标准输入(stdin)读取表达式?
例如(以下不起作用):
grep -i -f &0 /path/to/text/file < "/regexp/"
Run Code Online (Sandbox Code Playgroud) 在Windows PowerShell上重定向标准输入/输出所需的语法是什么?
在Unix上,我们使用:
$./program <input.txt >output.txt
Run Code Online (Sandbox Code Playgroud)
如何在PowerShell中执行相同的任务?
我有一个大的tar文件split.是否可以cat使用管道来解压缩文件.
就像是:
cat largefile.tgz.aa largefile.tgz.ab | tar -xz
Run Code Online (Sandbox Code Playgroud)
代替:
cat largefile.tgz.aa largfile.tgz.ab > largefile.tgz
tar -xzf largefile.tgz
Run Code Online (Sandbox Code Playgroud)
我一直在四处寻找,但我找不到答案.我想看看是否有可能.
我正在编写我的第一个clojure程序,并希望从stdin读取行.
当我尝试这个:
(doall (map #(println %) (line-seq *in*)))
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
Exception in thread "main" java.lang.ClassCastException: clojure.lang.LineNumberingPushbackReader cannot be cast to java.io.BufferedReader (test.clj:0)
Run Code Online (Sandbox Code Playgroud)
我在版本1.0和1.1中得到了相同的结果
那么如何转换*in*为seq我可以迭代?我会认为这很常见,*in*本身可以迭代,但这也不起作用 - 如果我尝试直接使用它,我得到:
java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.lang.LineNumberingPushbackReader (NO_SOURCE_FILE:0)
Run Code Online (Sandbox Code Playgroud)
另外,有没有在clojure中进行常规文件处理的例子?