Ora sono riuscito a farlo funzionare correttamente... ma non mi spiego una cosa

Prima nella cout mettevo:
cout << "Creata immagine " << path << '\n' (o "\n");

e nel programma principale mi si verifica quel problema dello scatto di 47

sostituendo il '\n' con un endl invece va tutto perfettamente

Ma \n e endl non sono la stessa cosa?

Se sì come mai c'è questa differenza di comportamento quando reindirizzo lo standard output di questo programma in quello in .net (usando la classe process)?