$ cat main.js
#!/usr/bin/env node
// vim: set noexpandtab tabstop=2:
fs=require('fs');
//data=fs.readFileSync(process.stdin.fd);
data=fs.readFileSync('/dev/stdin');
console.log(data.toString());
$ ./main.js <<< 'Hello World!'
Hello World!
看来'/dev/stdin'
和process.stdin.fd
至少在我的环境(Mac OS X)中工作相同。它们在Unix变体系统上是否总是相同?谢谢。
答案 0 :(得分:2)
根据documentation,当fd0引用process.stdin.fd
时,net.Socket
可以指向/dev/stdin
或文件。
第一种情况是双工流,第二种情况是可读流。另一方面,在两种情况下,fd0在技术上仍然是 stdin ,如here所述。
Node在OS X上存在有关此功能的一些问题,您可以阅读有关here的信息。
我认为您可以假设process.stdin.fd
和/dev/stdin
在Unix变体系统上是可互换的,但是我更喜欢使用process.stdin.fd
,因为SELECT *
FROM person
WHERE name = 'smith'
主要用于调试节点中的目的。