是否可以静音一个函数? 例如:
#include <stdio.h>
int function(){
printf("BLAH!");
return 10;
}
int main(){
printf("%d", silence( function()) );
return 0;
}
而不是:
BLAH!
10
我会得到:
10
这可能吗?如果阳性怎么办?
最佳答案
几乎可以做您想做的事情的一种非常复杂的方法是使用 dup2()系统调用。这需要执行 fflush(stdout); dup2(silentfd, stdout);
在调用 function()
之前,然后复制回去:fflush(stdout); dup2(savedstdoutfd, stdout);
。所以不可能像 silence(function())
那样做,因为这个结构只允许在 function()
已经执行之后执行代码。
必须提前准备文件描述符silentfd
和savedstdoutfd
(未经测试的代码):
int silentfd = open("/dev/null",O_WRONLY);
int savedstdoutfd = dup(stdout);
这几乎肯定不是您真正想要的,但鉴于您的问题措辞是“这可能吗?”,答案是“几乎”。
关于c - 如何防止功能打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16498364/