-1
2回目の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()'にする必要があります。 –