8
#include <iostream>
#include <unistd.h>
#include <stdlib.h>
int main() {
std::cout << 1;
fork();
exit(0);
}
fork
位于流入cout
后,但此代码打印11. 为什么?为什么代码只打印1,如果std::endl
被添加到cout
?为什么fork()会导致重复输出?
#include <iostream>
#include <unistd.h>
#include <stdlib.h>
int main() {
std::cout << 1 << std::endl;
fork();
exit(0);
}
缓冲区在两个进程中刷新两次。男人,那一定很烦人。 –
不幸的是,C++对象在分叉方面效果不好。基本上,该对象是有效的复制构造而不需要拷贝构造它,并且这避开了C++构建的许多保护。 – SergeyA
我只能想象一下'fork()'会在标准容器上发生什么样的破坏。只是不要这样做。 –