【发布时间】:2015-04-13 15:33:38
【问题描述】:
假设我有
while(1){
printf something
printf something else
recv(....);}
我知道recv应该等待发送一些东西,所以在此之前挂起控制台是正常的。但是recv在到达它的行之前挂起程序。例如,如果我运行任何这样的程序,两个printfs在它永远不会发生之前
有人知道为什么会这样吗?
【问题讨论】:
-
你的程序编译没有任何错误吗?在
while之前,可能还有其他任何东西不允许代码到达。此外,如果您在问题中标记编程语言,您可以获得更好的响应。 -
是的,完全没有错误。语言是C
-
你能展示你的原始代码吗?
-
尚未执行的代码怎么会对程序产生影响?我认为您的结论/假设需要重新审查。正如下面至少一个答案中所建议的那样,
printf()的输出可能没有被刷新到终端 - 如果您的printf()数据(来自格式字符串或正在格式化的数据之一) 不包含换行符...