c - 在 Windows 上删除名为 "NUL"的文件

标签 c windows null cygwin

我在 Windows 7 上运行了一个在 Cygwin 下编译的程序,并传递了“NUL”作为输出文件名。它实际上没有抑制输出,而是在当前目录中创建了一个名为“NUL”的文件。 (显然它需要“/dev/null”,即使在 Windows 上也是如此。)现在我无法删除这个“NUL”文件!

我已经试过了:

  • Windows 资源管理器 - 错误:“无效的 MS-DOS 函数”(是的,这就是它所说的!)
  • 使用“del NUL”的命令提示符 - 错误:“文件名、目录名或卷 标签语法不正确。”
  • 删除整个目录 - 与删除文件相同
  • remove() 在 C 程序中 - 也失败

如果不安装完整的 Cygwin 环境并在 Cygwin 下编译 C 程序,我如何才能摆脱这些 NUL 文件(我现在有几个)?

最佳答案

打开命令提示符并使用这些命令首先重命名然后删除 NUL 文件:

C:\> rename \\.\C:\..\NUL. deletefile.txt
C:\> del deletefile.txt

使用 \\.\ 前缀告诉高级文件 I/O 函数将未解析的文件名传递给设备驱动程序 - 这样您就可以访问其他无效的名称。

阅读this article关于 Windows 中的有效文件/路径名和各种保留名称。

关于c - 在 Windows 上删除名为 "NUL"的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17883481/

相关文章:

c++ - 强制 Eclipse 将 .c 文件视为 C++

c - 访问 union 数组的 union 成员

windows - 如何在 Windows 中使用 File-Rename 又名 Perl 的重命名?

windows - "git checkout --patch"与 autocrlf=true 不兼容吗?

c - 使用 TRE 进行模糊正则表达式匹配

sql - 如何将带有字符串的列中的空白转换为空值

c - c 和 java 中的输出 AES/ECB/PKCS7 不相同

mysql - 仅用于 IS NULL 和 IS NOT NULL 的列上的索引

objective-c - ObjC 中 nan 和类似值的含义

c - yacc:在 yyparse() 方法中使用文件指针