たとえば、クラッシュしやすいコードを大量に実行する必要があるため、別のプロセスで実行する必要があります。通常、私は次のようにします。
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);
明らかに、Qt4アプリケーションでフォークを使用することはできますが、Qt4が提供するものや、多数のアーキテクチャに頼ることなくポータブルな方法で同じ機能をアーカイブできるかどうか疑問に思っています#ifdefs
。
いずれにせよ、私はこのアプリをpthread
実装のみにすることを目標としていますが、それでも可能な限り「ネイティブ」QtAPIに近づけたいと思っています。
私はテストしましQThread
たが、スレッドでのsegfaultingは明らかにアプリケーション全体をクラッシュさせ、QProcess
完全に異なる実行可能ファイルを生成する場合にのみ使用することを目的としているようです。他の選択肢はありますか?