'/ dev / stdin'或`process.stdin.fd`上fs.readFileSync()的区别?

时间:2019-10-23 10:38:30

标签: node.js

$ 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变体系统上是否总是相同?谢谢。

1 个答案:

答案 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' 主要用于调试节点中的目的。