【发布时间】:2010-09-23 17:01:14
【问题描述】:
在 Windows 上 /dev/null 的等价物是什么?
【问题讨论】:
标签: windows
在 Windows 上 /dev/null 的等价物是什么?
【问题讨论】:
标签: windows
我认为您需要NUL,至少在命令提示符或批处理文件中。
例如:
type c:\autoexec.bat > NUL
不创建文件。
(我相信如果您尝试以编程方式创建文件也是如此,但我没有尝试过。)
在 PowerShell 中,您需要 $null:
echo 1 > $null
【讨论】:
/dev/random 和 /dev/zero 设备驱动程序。
NUL:(和CON:,PRN:,...),它主要是一个风格问题并清楚地表明NUL: 是一个特殊对象,而不是一个名为NUL 的文件。此外,可以使用特殊的 API 创建一个名为 NUL 的文件(请参阅其中一个答案)。我梦想也许有一天,如果每个人都按照惯例使用冒号,我们将能够弃用可怕的特殊设备名称:-)
根据这个message on the GCC mailing list,你可以使用文件“nul”代替/dev/null:
#include <stdio.h>
int main ()
{
FILE* outfile = fopen ("/dev/null", "w");
if (outfile == NULL)
{
fputs ("could not open '/dev/null'", stderr);
}
outfile = fopen ("nul", "w");
if (outfile == NULL)
{
fputs ("could not open 'nul'", stderr);
}
return 0;
}
(此代码归功于Danny;从他的消息中复制粘贴。)
你也可以通过重定向使用这个特殊的“nul”文件。
【讨论】:
C:\dev 目录,并且你使用了很多 GNU 实用程序,你最终会在该目录中获得一个名为 null 的神秘文件。
NUL 在 Windows 中似乎实际上是任何文件夹中的虚拟路径。就像任何文件系统中的..、.。
使用任何带有 NUL 的文件夹都可以。
例子,
echo 1 > nul
echo 1 > c:\nul
echo 1 > c:\users\nul
echo 1 > c:\windows\nul
在 Linux 上与/dev/null 具有相同的效果。
这是在 Windows 7 64 位上测试的。
【讨论】:
md \\.\c:\nulquora.com/…,gohacking.com/how-to-create-con-folder-in-windows,superuser.com/questions/86999/…
nul
Jon Skeet 是正确的。这是 Windows Embedded 文档中的 Nul Device Driver 页面(我不知道为什么它不在其他地方......)。
这是另一个:
【讨论】:
NUL 也以编程方式工作。例如。以下:
freopen("NUL", "w", stderr);
无需创建文件即可按预期工作。 (MSVC++ 12.0)
【讨论】:
NUL回答的次数就这么多了,5年前就已经过了。
如果您需要在 Microsoft Windows 中执行与 Linux 中 /dev/null 的符号链接等效的操作,您可以打开管理员的 cmd 并输入:
对于文件:
mklink c:\path\to\file.ext NUL:
或者,对于目录:
mklink /D c:\path\to\dir NUL:
这将使文件/目录始终保持在 0 字节,并且每次写入尝试仍然返回成功。
【讨论】:
您必须在 Windows PowerShell 中为此使用 start 和 $NUL >:
输入此命令,假设 mySum 是您的应用程序的名称,5 10 是您发送的命令行参数。
start .\mySum 5 10 > $NUL 2>&1
start 命令将启动一个分离的进程,效果类似于&。如果您正在运行的程序是控制台应用程序,/B 选项可防止启动打开新的终端窗口。 NUL 相当于 Windows 的 /dev/null。末尾的2>&1 会将stderr 重定向到stdout,这将全部转到NUL。
【讨论】: