代码正在给出意外的结果 我只是在尝试Frk()C++函数,但我发现了惊人的结果 #include<stdio.h> #include <unistd.h> #include <sys/wait.h> #include <sys/types.h> #include <signal.h> int main() { int x=0; int i; for( i=0;i<2;i++) { fork(); x=x+5; printf("%d\n",x); sleep(2); } return 0; } #包括 #包括 #包括 #包括 #包括 int main() { int x=0; int i; 对于(i=0;i
标准输出流通常是行缓冲的。当您在打印时包含代码正在给出意外的结果 我只是在尝试Frk()C++函数,但我发现了惊人的结果 #include<stdio.h> #include <unistd.h> #include <sys/wait.h> #include <sys/types.h> #include <signal.h> int main() { int x=0; int i; for( i=0;i<2;i++) { fork(); x=x+5; printf("%d\n",x); sleep(2); } return 0; } #包括 #包括 #包括 #包括 #包括 int main() { int x=0; int i; 对于(i=0;i,c,C,标准输出流通常是行缓冲的。当您在打印时包含\n时,您刷新流,并且在下一个fork()之前将5打印到控制台被调用。当您不包含它时,它只是挂在某个地方的缓冲区中,当调用fork时,它会与其他所有内容一起被复制。printf只保证在执行\n时刷新缓冲区如果您不执行,则其他内容可以写入缓冲区,然后刷新他后来用不同顺序的元素(取决于添加到缓冲区的时间)。非常感谢,先生……知道原因了……很抱歉,我找不到这样的帖子……我以后会小心的 int main() { int x=0; int i; for(
\n
时,您刷新流,并且在下一个fork()之前将5
打印到控制台
被调用。当您不包含它时,它只是挂在某个地方的缓冲区中,当调用fork
时,它会与其他所有内容一起被复制。printf
只保证在执行\n
时刷新缓冲区如果您不执行,则其他内容可以写入缓冲区,然后刷新他后来用不同顺序的元素(取决于添加到缓冲区的时间)。非常感谢,先生……知道原因了……很抱歉,我找不到这样的帖子……我以后会小心的
int main()
{
int x=0;
int i;
for( i=0;i<2;i++)
{
fork();
x=x+5;
printf("%d ",x);
sleep(2);
}
return 0;
}