如何在 C 中的某个时间后退出 while(1) 循环?
How to exit while(1) loop after sometime in C?
我正在制作一个程序,我在其中从串行设备获取数据。我面临的问题是设备给了我错误的数据,直到我 运行 while(1) 然后读取数据。所以我想到 运行 将 for 循环循环 100000 次,然后读取数据,但它仍然给出了错误的数据。我只能使用 while(1)。那么无论如何我可以在 7-10 秒后停止 while(1) 吗?
请帮忙,谢谢。!!
我觉得会有帮助。
int i=0;
while(1){
// do your work.
if ( i == 100 ) break; // for an example.
i++;
}
printf("After While\n");
while(1) {
delay(10000); //To delay for 10 seconds.
break;
}
如果你不能使用 delay() 那么可能使用一些循环来获得大量的时间延迟然后打破循环。
要退出循环,您必须使用 break
语句。
while(1)
{
//your code...
sleep(7);//to sleep for 7 seconds
break;//jumps out of the loop after 7 seconds of delay
}
您的 while
循环是否有必要在 1
上迭代?也许你可以循环 time(NULL)
代替,例如:
time_t t = time(NULL) + 10;
while (time(NULL) < t) {
/* ... */
}
这并不准确;循环可以 运行 持续 9 秒到 10 秒之间的任何时间,甚至可能更长,具体取决于其他任务对 CPU 使用的饱和程度。然而,您似乎并没有在寻找任何精确的东西,这应该会给您一些想法...
如果出于某种愚蠢的原因必须使用 while (1)
,那么您可以将此想法与 if
和 break
一起使用,如下所示:
time_t t = time(NULL) + 10;
while (1) {
if (time(NULL) >= t) {
break;
}
/* ... */
}
#include <time.h>
#include <stdio.h>
int main()
{
time_t end = time(NULL) + 7; //7s
while (1) {
//your code...
printf("running...\n");
if (time(NULL) >= end) {
break;
}
//your code..
}
return 0;
}
我正在制作一个程序,我在其中从串行设备获取数据。我面临的问题是设备给了我错误的数据,直到我 运行 while(1) 然后读取数据。所以我想到 运行 将 for 循环循环 100000 次,然后读取数据,但它仍然给出了错误的数据。我只能使用 while(1)。那么无论如何我可以在 7-10 秒后停止 while(1) 吗? 请帮忙,谢谢。!!
我觉得会有帮助。
int i=0;
while(1){
// do your work.
if ( i == 100 ) break; // for an example.
i++;
}
printf("After While\n");
while(1) {
delay(10000); //To delay for 10 seconds.
break;
}
如果你不能使用 delay() 那么可能使用一些循环来获得大量的时间延迟然后打破循环。
要退出循环,您必须使用 break
语句。
while(1)
{
//your code...
sleep(7);//to sleep for 7 seconds
break;//jumps out of the loop after 7 seconds of delay
}
您的 while
循环是否有必要在 1
上迭代?也许你可以循环 time(NULL)
代替,例如:
time_t t = time(NULL) + 10;
while (time(NULL) < t) {
/* ... */
}
这并不准确;循环可以 运行 持续 9 秒到 10 秒之间的任何时间,甚至可能更长,具体取决于其他任务对 CPU 使用的饱和程度。然而,您似乎并没有在寻找任何精确的东西,这应该会给您一些想法...
如果出于某种愚蠢的原因必须使用 while (1)
,那么您可以将此想法与 if
和 break
一起使用,如下所示:
time_t t = time(NULL) + 10;
while (1) {
if (time(NULL) >= t) {
break;
}
/* ... */
}
#include <time.h>
#include <stdio.h>
int main()
{
time_t end = time(NULL) + 7; //7s
while (1) {
//your code...
printf("running...\n");
if (time(NULL) >= end) {
break;
}
//your code..
}
return 0;
}