Hej!
Mam fragment kodu:
//--- przeniesienie do pracy w tle
int pid = fork();
if (pid<0) {
blad << "Error: child process not created!" << endl;
SaveLog("E: Couldn't move to background");
f_background = true;
exit(-12); // fork error
}
else if (pid>0) {
SaveLog(txt2string("--> Exiting parent process. Child's (background) PID: ").append(int2string(pid)));
exit(3); // parent exits
SaveLog(" ... Parent after 'fork'"); // chyba to nie zadziała
}
//else => pid=0 => jestem w procesie 'child'
//--- odtąd jest najważniejsze
SaveLog(" ... Child after 'fork'");
try {
LoadNet();
} catch (...) {
SaveLog("E: LoadNet failed!");
}
SaveLog(" ... Child after 'LoadNet'");
Tworzę sobie proces child i wywołuję z niego procedurę LoadNet. Mimo, iż jest ona w bloku TRY...CATCH, to w logu zapisuje się jedynie:
... Child after 'fork'
W LoadNet nie mam żadnego exit. Wygląda więc, że w niej wyskakuje jakiś wyjątek. Nie rozumiem tylko, dlaczego mój 'catch' go nie wychwytuje.
Co tu jest źle?