如何从node.js写入Windows下的NUL设备?

Sal*_*erC 11 windows null device node.js nul

这几天困扰着我.我知道标准流重定向到NUL设备,但事实并非如此.node.js在其fs native/libuv绑定下使用CreateFileW.

不幸的是使用像:

require('fs').writeFileSync('NUL', 'foo')
Run Code Online (Sandbox Code Playgroud)

在具有3个字节的cwd中创建NUL文件.

我尝试写入\ Device\Null,但由于我几乎是一个*nix头,其中一切都是文件,我实际上找不到\ Device\Null的工作路径.例如\\.\ Device\Null抛出ENOENT.

有关如何在Windows下完成此工作的任何想法?

似乎是相关的,但是我无法跟踪从lib/fs.js到uv/src/win/fs.c的整个流程,以检查路径参数是否不受某种相对于绝对路径分辨率的影响.

Tom*_*ski 6

NUL设备的有效路径"\\\\.\\NUL"不是NUL,因此用法是:fs.writeFileSync("\\\\.\\NUL", "foo").这个问题是针对GitHub上的Node.js提出的:https://github.com/nodejs/node-v0.x-archive/issues/9271

既然NUL是设备,而不是文件,它必须通过设备命名空间访问 - 这需要\\.\在开头(其他斜杠用于转义) - 请参阅https://msdn.microsoft.com/en-gb/library/ windows/desktop/aa365247.aspx#Win32_Device_Namespaces.

dev-nullNPM上还有一个可以与流一起使用的简单库:https://www.npmjs.com/package/dev-null(.writeFile尽管不是).