Il fork
si trova dopo lo streaming in cout
, ma questo codice viene stampato 11. Perché? E perché il codice stampa solo 1 se std::endl
viene aggiunto a cout
?Perché fork() genera un output duplicato?
#include <iostream>
#include <unistd.h>
#include <stdlib.h>
int main() {
std::cout << 1 << std::endl;
fork();
exit(0);
}
I buffer vengono svuotati due volte, in due processi. Uomo, deve essere fastidioso. –
Sfortunatamente, gli oggetti C++ non giocano bene con il biforcarsi. Fondamentalmente, l'oggetto viene effettivamente copiato senza copiarlo, e questo elude molta protezione costruita da C++. – SergeyA
Posso solo immaginare lo scompiglio che un fork() 'potrebbe provocare su contenitori standard. Basta non farlo. –