/ dev/null总是可以打开吗?

Mic*_*rer 1 c dev-null

我想fprintf通过将目标文件重定向到来禁止某些调用/dev/null.但我能确定,fopen("/dev/null", "w");永远不会回来NULL.换句话说,是否每次都可以打开这个"文件"?

如果是这样,我可以使用这个漂亮的三元运算符:

FILE *whereToPrint = (strcmp(custom_topic, ERROR_TOPIC) == 0) ? fopen("/dev/null", "w") : stdout;

fprintf(whereToPrint, "Message sent!\n\n");
Run Code Online (Sandbox Code Playgroud)

lit*_*die 6

是的,在功能正常的系统上,/dev/null世界是可写的:

 ls -l /dev/null
 crw-rw-rw- 1 root root 1, 3 Jul 20  2017 /dev/null
Run Code Online (Sandbox Code Playgroud)

所以它总能奏效.它不是抑制输出的最有效方法.如果你不想这样做,最好不要尝试写...但如果它不是很多输出,那就无所谓了.

有人指出,可以root设置权限/dev/null,使其不可写入other.或者他们可以完全删除设备.这是真的..但它会导致unix损坏. /dev/null我应该拥有如上所示的权限..它以这种方式安装,永远不应该被更改.不过,你应该检查返回值fopen()open()每当打开任何文件.

  • @liliscent True ..你也可以`sudo chmod 000/etc/passwd`或`sudo rm -f/bin/bash` ..或者做一些无数的东西来破坏你的系统.我的答案是一个正常运行的系统...理想情况下,人们会想要一如既往地检查fopen()的返回值......但我不想摆脱基本问题. (2认同)

H.S*_*.S. 5

是的,可能由于某种原因fopen无法打开/dev/null,例如/dev/null. 虽然非常罕见,但不能否认这种可能性。