-1
我被問到會發生多少次迭代(在第二個while循環中)。我的答案是無限的,但是當我運行這個代碼時,它執行了10912次迭代,程序停止了打印(但它似乎並沒有結束,因爲我仍然需要按ctrl + c來退出它)。爲什麼這個C代碼(寫入unix管道)無限迭代?
爲什麼會發生這種情況?我找不到那個特定的數字是任何限制/最大值。
char string [] = 「hello」;
void main()
{
char buf[1024];
char *cp1, *cp2;
int fds[2];
cp1 = string;
cp2 = buf;
while (*cp1)
*cp2++ = *cp1++;
pipe(fds);
int i = 0;
while(1)
{
write(fds[1], buf, 6);
i++;
printf("i: %d", i);
}
}
您可能超出了某個緩衝區,直到有更多空間時才阻止。 – Carcigenicate
對方是否有閱讀管道的東西?如果沒有,這是有道理的管道有一個內部緩衝區,不會讓你寫,直到它是空的。 – kichik
它應該是'int main()' –