Digamos, necesito ejecutar un montón de código que es propenso a fallar, así que necesito ejecutarlo en un proceso diferente. Normalmente lo haría así:forma portátil de "tenedor()" en la aplicación 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);
Obviamente sólo puedo usar tenedor en mi solicitud Qt4 pero me pregunto si puedo archivar misma funcionalidad con cualquier cosa que ofrece Qt4 o cualquier forma portátil sin tener que recurrir a tener un montón de arquitectura #ifdefs
?
En cualquier caso, apuntaré a esta aplicación para tener solo la implementación pthread
, pero me gustaría mantener las cosas lo más cercanas posible a la API Qt "nativa".
He probado QThread
, y segfaulting en el hilo bloquea la aplicación completa obviamente y parece que QProcess
solo está destinado a ser utilizado al generar completamente diferentes ejecutables. ¿Alguna otra alternativa?
¿Sabes que hay un foro de Qt en http://qtcentre.org? También puede preguntar en el canal #qt en irc.freenode.net. En caso de que no obtenga su respuesta aquí. –
Intenté buscar posibles ejemplos de la wiki de qtcentre pero no encontré ninguno, pasaré por #qt más tarde hoy propably =) – rasjani