Windows上是否存在/dev/null?

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*

Windows上的
/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的神秘文件。