我想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)
是的,在功能正常的系统上,/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()每当打开任何文件.
| 归档时间: |
|
| 查看次数: |
2102 次 |
| 最近记录: |