【发布时间】:2011-09-22 01:42:50
【问题描述】:
我正在尝试制作一个包含无限循环以等待用户输入信号的小程序。我想在开始无限循环之前打印出有关当前工作目录的消息。该消息自行工作,但是当我将无限循环放入代码中时,该消息不会打印出来(但终端确实无限循环)。代码是:
#include <stdio.h>
int MAX_PATH_LENGTH = 100;
main () {
char path[MAX_PATH_LENGTH];
getcwd(path, MAX_PATH_LENGTH);
printf("%s> ", path);
while(1) { }
}
如果我取出while(1) { },我会得到输出:
ad@ubuntu:~/Documents$ ./a.out
/home/ad/Documents>
这是为什么?谢谢!
【问题讨论】:
-
其他人已经回答了你的问题,但也应该注意,像这样的无限自旋循环并不是等待的正确编程技术。它会使系统陷入僵局,将您的风扇调到最大,浪费您所有的电池寿命,甚至可能使守护进程飞出您的鼻子。 (即将推出的 C1x 标准可能会允许编译器在无限循环中移动非 IO 代码,这可能会导致真正意想不到的事情......)
-
@R.. 感谢您的建议。您还有其他技术可以推荐给我吗?
-
你可能想从用户那里读取输入,所以你应该调用像
fgets这样的输入函数...