私は別のプロセスで実行する必要があるので、クラッシュする傾向のあるコードを実行する必要があります。Qt4アプリケーションでは "fork()"への移植可能な方法はありますか?
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
実装しか持たないようにこのアプリをターゲットしていますが、できるだけ "ネイティブ" Qt APIに近いものにしたいと考えています。
私はQThread
をテストしましたが、スレッド内のsegfaultがアプリケーション全体をクラッシュさせることは明らかでした。完全に異なる実行ファイルを作成する場合にのみQProcess
が使用されるように見えます。他の選択肢はありますか?
http://qtcentre.orgにQtフォーラムがありますか? irc.freenode.netの#qt channelで質問することもできます。あなたが答えを得られない場合に備えてください。 –
私はqtcentreのwikiから可能な例を検索しようとしましたが、何も見つからなかったので、今度は#qtで後でpropably =) – rasjani