Windows上是否存在/dev/null?
Windows上的Windows上是否存在/dev/null?,windows,Windows,Windows上的/dev/null等效于什么?我认为您需要NUL,至少在命令提示符或批处理文件中 例如: type c:\autoexec.bat > NUL 不创建文件 (我相信,如果您尝试以编程方式创建文件,情况也是如此,但我还没有尝试过。) 在PowerShell中,您需要$null: echo 1 > $null 据此,您可以使用文件“nul”而不是/dev/null: #include <stdio.h> int main () { FILE*
/dev/null
等效于什么?我认为您需要NUL
,至少在命令提示符或批处理文件中
例如:
type c:\autoexec.bat > NUL
不创建文件
(我相信,如果您尝试以编程方式创建文件,情况也是如此,但我还没有尝试过。)
在PowerShell中,您需要$null
:
echo 1 > $null
据此,您可以使用文件“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;
}
#包括
int main()
{
文件*outfile=fopen(“/dev/null”,“w”);
if(outfile==NULL)
{
fputs(“无法打开'/dev/null',stderr);
}
outfile=fopen(“nul”、“w”);
if(outfile==NULL)
{
fputs(“无法打开'nul',stderr”);
}
返回0;
}
(此代码归功于;从其消息粘贴副本。)
您还可以通过重定向使用此特殊的“nul”文件。Jon Skeet是正确的。这是Windows嵌入式文档中的页面(我不知道为什么它不在其他地方…) 下面是另一个:
在Windows中,NUL实际上似乎是任何文件夹中的虚拟路径。就像任何文件系统中的
。
,
使用NUL后面的任何文件夹都可以
例如
echo 1 > nul
echo 1 > c:\nul
echo 1 > c:\users\nul
echo 1 > c:\windows\nul
与Linux上的/dev/null
具有相同的效果
这是在64位Windows7上测试的。NUL也可以通过编程方式工作。例如:
freopen(“NUL”、“w”、stderr);
按预期工作,无需创建文件。(MSVC++12.0)您必须在Windows PowerShell中使用启动和$num:
输入此命令,假设mySum
是应用程序的名称,5
10
是要发送的命令行参数
start .\mySum 5 10 > $NUL 2>&1
start
命令将启动分离的进程,其效果与&
类似。如果正在运行的程序是控制台应用程序,则/B
选项可防止start打开新的终端窗口。而NUL
是Windows的等价物/dev/null
。最后的2>&1
将把stderr重定向到stdout,这将全部转到NUL
,如果您需要在Microsoft Windows中执行相当于Linux中的/dev/null
符号链接的操作,您将打开管理员的cmd
,然后键入:
对于文件:
mklink c:\path\to\file.ext NUL:
mklink /D c:\path\to\dir NUL:
或者,对于目录:
mklink c:\path\to\file.ext NUL:
mklink /D c:\path\to\dir NUL:
这将使文件/direcotry始终保持在0字节,并且每次写入尝试都会返回成功。当然Jon Skeet是正确的。感谢您陈述了一个显而易见的普遍事实:)此处的2个链接现在已断开:(@capthive:/dev/null.txt和/dev/null/foo.txt之间有区别。我只是再看一遍,然后收回了我的原始语句。我在编写代码,错误被吞没了。我正在删除它,所以没有人会意外地认为它是真的。对于寻找Unix的人来说,“特别”Windows:下的文件是Win32的
/dev/random
和/dev/zero
设备驱动程序。@CoDEmanX:这不是我的经验。写入控制台甚至文件可能需要大量时间。我刚刚用一个程序将“Hello there”写入stdout 10000000次进行了测试。重定向到一个文件(在SSD上)花了18秒。重定向到NUL花了4秒。一段时间后,由于缺乏耐心,根本没有重定向让我放弃了……我在Win95中学到过很多次,你应该在特殊的设备名称后面写一个冒号,所以NUL:
(和CON:
,PRN:
,…),这主要是一个风格问题,清楚地表明NUL:
是一个特殊的对象,而不是一个名为NUL
的文件。此外,通过一个特殊的API,可以创建一个名为NUL
的文件(请参见答案之一)。我梦想有一天,如果每个人都按照惯例使用冒号,我们将能够反对可怕的特殊设备名称:-)很好,在Windows 7 64位上创建名为“nul”的文件是不可能的:)@Dawiderency这是可能的,尽管不是经典的方式。例如,md\\.\c:\nul
,在bash的Windows 10上,第一个创建文件nul
在win10中使用java抛出IOException。只需要把它包在试抓上。我希望没有例外/错误,就像/dev/null一样。这个问题只需要用NUL
回答很多次,五年前就已经过去了。我认为这个答案为讨论添加了一个有效的内容。啊,这就解释了为什么,如果你在Windows中创建C:\dev
目录,使用大量GNU实用程序,最终会在该目录中获得一个名为null的神秘文件。