作者:有风吹过best | 2023-09-02 16:03
什么是/dev/null
Windows上的等价物?
1> Jon Skeet..:
我想你想要NUL
,至少在命令提示符或批处理文件中.
例如:
type c:\autoexec.bat > NUL
不创建文件.
(我相信如果您尝试以编程方式创建文件也是如此,但我还没有尝试过.)
在PowerShell中,您需要$null
:
echo 1 > $null
@capthive:/dev/null.txt和/dev/null/foo.txt之间有区别.
@CoDEmanX:那不是我的经历.写入控制台 - 甚至是文件 - 可能需要花费大量时间.我刚用一个程序写了"Hello there"来测试它到标准输出10000次.重定向到文件(在SSD上)需要18秒.重定向到NUL花了4秒钟.根本没有重定向让我在一段时间后因缺乏耐心而放弃......
对于在Windows下寻找Unix"特殊"文件的人:[这里](http://www.ltr-data.se/opencode.html/#ZeroDrv)是`/ dev/random`和`/ dev/zero`设备Win32的驱动程序.
我只是再看一遍,然后收回原来的陈述.我正在编写代码,错误被吞噬了.我正在删除它,所以没有人不小心把它当作真相.
我在Win95时代学到过,您应该在特殊的设备名称后面写一个冒号,所以`NUL:`(和`CON:`,`PRN:`,...),主要是样式和显示问题显然,“ NUL:”是一个特殊对象,而不是名为“ NUL”的文件。同样,可以使用特殊的API来创建一个名为“ NUL”的文件(请参阅答案之一)。我梦想也许有一天,如果每个人都按惯例使用冒号,我们将可以弃用可怕的特殊设备名称:-)
2> strager..:
根据GCC邮件列表中的此消息,您可以使用文件"nul"而不是/ dev/null:
#include
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;
}
(丹尼对此代码的信用;从他的消息中复制粘贴.)
您还可以通过重定向使用此特殊的"nul"文件.
3> Jerry..:
NUL
在Windows中似乎实际上是任何文件夹中的虚拟路径.就像..
,.
在任何文件系统.
使用NUL后面的任何文件夹都可以.
例,
echo 1 > nul
echo 1 > c:\nul
echo 1 > c:\users\nul
echo 1 > c:\windows\nul
与/dev/null
Linux上的效果相同.
这是在Windows 7,64位上测试的.
很好,在Windows 7 64bit上创建一个名为"nul"的文件是不可能的:)
@DawidFerenczy它是可能的,虽然不是经典的方式.例如`md \\.\ c:\nul` https://www.quora.com/Why-is-it-impossible-to-name-a-folder-in-Windows-with-the-word-con, http://www.gohacking.com/how-to-create-con-folder-in-windows/,http://superuser.com/questions/86999/unable-to-rename-a-folder-or-a -file-AS-CON
4> Foredecker..:
Jon Skeet是对的.这是Windows Embedded文档中的Nul设备驱动程序页面(我不知道为什么它不在其他地方......).
这是另一个:
注册表中的null设备
特殊文件名
更多关于文件命名
当然Jon Skeet是对的.谢谢你陈述一个明显而普遍的真理:)
5> 小智..:
NUL
以编程方式工作.例如以下内容:
freopen("NUL", "w", stderr);
按预期工作而不创建文件.(MSVC++ 12.0)
我认为这个答案为讨论增添了有益的贡献.