0

我有一个程序。在这个程序中,我有一个与其他设备的 http 会话。在程序中我有很多printf. 当我关闭stdoutwith时,fclose(stdout)我注意到由打印的消息printf发送到 http 会话(消息包含在 http 数据包中)。

我想知道这种奇怪的行为,我想知道如何避免这种行为?我的意思是如何避免将打印的消息重定向到 http 会话?

4

2 回答 2

3

调用printffclose(stdout)调用未定义的行为。不要这样做。如果您只需要抑制stdout,请打开 /dev/null 并将dup2其放到 fd #1 上。

于 2013-02-20T20:38:42.663 回答
1

发生的事情是您正在关闭 stdout 使用的文件描述符,并且创建的下一个文件描述符(在本例中为套接字)以它传统上使用的文件描述符(FD 1)结束。

不要关闭标准输出。如果您需要让它消失,请将其替换为指向的文件描述符/dev/null,例如:

freopen("/dev/null", "w", stdout);
于 2013-02-20T20:37:08.890 回答