gpt4 book ai didi

c - 如何防止功能打印?

转载 作者:太空狗 更新时间:2023-10-29 16:39:32 25 4
gpt4 key购买 nike

是否可以静音一个函数?例如:

#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() 已经执行之后执行代码。

必须提前准备文件描述符silentfdsavedstdoutfd(未经测试的代码):

 int silentfd = open("/dev/null",O_WRONLY);
int savedstdoutfd = dup(stdout);

这几乎肯定不是您真正想要的,但鉴于您的问题措辞是“这可能吗?”,答案是“几乎”。

关于c - 如何防止功能打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16498364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com