#include <iostream>
#include <unistd.h>
#include <stdlib.h>
int main() {
std::cout << 1;
fork();
exit(0);
}
Die fork
wird, nachdem sie in cout
Streaming befindet, aber dieser Code druckt 11. Warum? Und warum druckt der Code nur 1, wenn std::endl
zu cout
hinzugefügt wird?Warum führt fork() zu einer doppelten Ausgabe?
#include <iostream>
#include <unistd.h>
#include <stdlib.h>
int main() {
std::cout << 1 << std::endl;
fork();
exit(0);
}
Puffer werden zweimal gespült, in zwei Prozessen. Mann, das muss nervig sein. –
Leider funktionieren C++ - Objekte nicht gut mit Forking. Im Grunde wird das Objekt effektiv kopiert, ohne es zu kopieren, und dies umgeht eine Menge Schutz, der von C++ aufgebaut wird. – SergeyA
Ich kann mir nur vorstellen, wie verheerend ein 'fork()' auf Standardcontainern wirken würde. Tu das einfach nicht. –