Dire, ho bisogno di eseguire un gruppo di codice che è soggetto a crash, quindi ho bisogno di eseguirlo su un processo diverso. In genere lo farei in questo modo:Modo portatile per "fork()" nell'applicazione Qt4?
pid = fork();
if (pid == -1) {
std::cout << "Cant Spawn New Thread";
exit(0);
} else if (pid == 0) {
std::cout << "Im a child that will crash\n";
char *foo = (char *) 0xffff;
std::cout << foo;
exit(0);
} else {
std::cout << "PID: " << pid << "\n";
}
do {
std::cout << "Waiting for " << pid << " to finish .. \n";
pid_w = waitpid(pid,&status,0);
} while (pid_w == -1);
Ovviamente posso solo usare forchetta nella mia applicazione Qt4 ma mi chiedo se posso archiviare stessa funzionalità con qualsiasi cosa che Qt4 fornisce o qualsiasi modo portatile senza ricorrere alla avendo un mucchio di architettura #ifdefs
?
In ogni caso, ho scelto questa app per avere solo l'implementazione pthread
, ma mi piacerebbe comunque mantenere le API Qt più vicine alle API "native" il più possibile.
Ho testato QThread
e il segfaulting nel thread interrompe l'intera applicazione in modo evidente e sembra che lo QProcess
sia utilizzato solo quando si generano file eseguibili completamente diversi. Qualche altra alternativa?
Sai che c'è un forum Qt su http://qtcentre.org? Puoi anche chiedere sul canale #qt su irc.freenode.net nel caso in cui tu non abbia la tua risposta qui. –
Ho provato a cercare possibili esempi dal wiki di qtcentre ma non ne ho trovato nessuno, mi occuperò di #qt più tardi oggi propably =) – rasjani