Windows上的/dev/null
相当于什么?
我认为你想要NUL
,至少在命令提示符或批处理文件中。
例如:
type c:\autoexec.bat > NUL
不创建文件。
(我相信如果您尝试以编程方式创建文件也是如此,但我还没有尝试过。)
在PowerShell中,您需要$null
:
echo 1 > $null
根据这个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”文件。
Windows中的NUL
似乎实际上是任何文件夹中的虚拟路径。就像任何文件系统中的..
,.
一样。
使用NUL后面的任何文件夹都可以。
例,
echo 1 > nul
echo 1 > c:\nul
echo 1 > c:\users\nul
echo 1 > c:\windows\nul
在Linux上与/dev/null
具有相同的效果。
这是在Windows 7,64位上测试的。
Jon Skeet是对的。这是Windows Embedded文档中的Nul Device Driver页面(我不知道为什么它不在其他地方......)。
这是另一个:
NUL
也以编程方式工作。例如。下列:
freopen("NUL", "w", stderr);
按预期工作而不创建文件。 (MSVC ++ 12.0)
如果您需要在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
。