C 如果未处理printf,会发生什么

C 如果未处理printf,会发生什么,c,posix,C,Posix,我目前正在支持一些在很久以前编写、在gcc 2.95.3中编译的遗留软件。该程序是在SBC中运行的,有时我不得不通过telnet连接到它来修复问题。我注意到,当SBC独立运行时,它会显示一些意外行为,例如未执行 当我使用telnet时,关闭进程并手动执行它,这样就可以保持良好状态。我怀疑这与在没有合适的终端/控制台的情况下执行printf有关 如果不处理printf,会有什么影响?可能是系统试图打印到硬件串行端口(速度非常慢),而当您用TCP端口代替telnet时?这取决于您使用的标准库,大多数

我目前正在支持一些在很久以前编写、在gcc 2.95.3中编译的遗留软件。该程序是在SBC中运行的,有时我不得不通过telnet连接到它来修复问题。我注意到,当SBC独立运行时,它会显示一些意外行为,例如未执行

当我使用telnet时,关闭进程并手动执行它,这样就可以保持良好状态。我怀疑这与在没有合适的终端/控制台的情况下执行
printf
有关


如果不处理
printf
,会有什么影响?

可能是系统试图打印到硬件串行端口(速度非常慢),而当您用TCP端口代替telnet时?

这取决于您使用的标准库,大多数都会尝试写入控制台,所以

您应该将STDOUT和STDERR重定向到NULL或文件,这应该很简单。
gcc 2.95非常稳定,因此我们几乎可以排除任何问题。

尝试在stdout重定向到/dev/null的情况下运行该进程?是的,我可以,但是如果printf未被处理,会发生什么,例如,stdout是控制台,但没有控制台该建议的目的是查看在将stdout重定向到/dev/null的情况下运行时是否仍然出现问题-如果它没有挂起,则您的假设可能是正确的-如果它仍然挂起,则问题可能在其他地方。