Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如果不是手动插入,无限循环何时终止?_C_While Loop_Infinite Loop_Terminate - Fatal编程技术网

C 如果不是手动插入,无限循环何时终止?

C 如果不是手动插入,无限循环何时终止?,c,while-loop,infinite-loop,terminate,C,While Loop,Infinite Loop,Terminate,我能访问的唯一一台计算机是我班上所有计算机中的一台,所以我无法尝试这个程序 while (1) printf ("I am Printing\n"); 我一个人呆了这么长时间。但我很想知道,如果我们让无限循环永远运行,无限循环何时终止 操作系统会转储程序还是会一直运行到电源关闭(通过清除旧的输出),或者类似的事情?它会一直运行到有东西停止它。如果你不停止,当停电时,或者当一辆卡车撞到你的大楼并损坏电脑时,或者当你的狗绊倒电源线并把它从墙上拉出来时,它就会停止 注意:您可以创建最终将停止

我能访问的唯一一台计算机是我班上所有计算机中的一台,所以我无法尝试这个程序

while (1)
    printf ("I am Printing\n");
我一个人呆了这么长时间。但我很想知道,如果我们让无限循环永远运行,无限循环何时终止


操作系统会转储程序还是会一直运行到电源关闭(通过清除旧的输出),或者类似的事情?

它会一直运行到有东西停止它。如果你不停止,当停电时,或者当一辆卡车撞到你的大楼并损坏电脑时,或者当你的狗绊倒电源线并把它从墙上拉出来时,它就会停止

注意:您可以创建最终将停止的循环,例如:

while (1)
{ 
    char *p = malloc(128); // allocate some memory
    *p = 1;
}
最终会耗尽内存并崩溃(
malloc
将返回NULL,而*NULL通常会崩溃[尽管有些类型的计算机不会这样做])。你也可以写:

int counter = 0;
while (1)
{
    counter++;
    if (counter == 10000)
        break;
}
这并不是无限的,因为它只会循环10000次,即使它有
while(1)

不过,您的程序不是这两个。这是一个真正的无限循环,不会崩溃。(请注意,打印到屏幕不会耗尽内存,因为旧文本会被丢弃)

如果用户这样设置,程序可能会停止。如果他们在Linux上,他们可以运行
/your|u program | head-n10
,它将打印前10行,然后在试图打印更多行时终止程序。或者他们可以运行
timeout 10./your_程序
,这将在10秒后杀死该程序


但是,如果没有任何东西使您的程序停止(不在程序中,也不由用户执行),它将不会停止。

它将一直运行,直到电源关闭(通过清除旧的输出),或者类似的事情

如果您的终端将屏幕上的所有文本存储在内存中,它将一直运行,直到外壳内存耗尽并被OOM杀手杀死


如果您的终端将文本存储在磁盘上,它可能会一直运行,直到终端的磁盘空间用完为止(然后可能还会继续运行)。

我不明白为什么操作系统会特别停止这个程序。操作系统可能会抱怨它没有响应,如果你的shell尝试存储所有文本,它将耗尽内存(但通常不会)。它永远不会…@Blaze是的,我确实想知道如果我的shell尝试存储所有文本,并且如果内存耗尽,会发生什么情况。这取决于shell,那么。它们中的大多数存储一定数量的行。之后,他们开始丢弃旧的线条。在这种情况下,程序不会因外壳内存不足而停止。您可以始终将
while(1)
while(fork())
交换。