说,我需要运行一堆容易崩溃的代码,所以我需要在不同的进程上运行它.通常我会这样做:
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应用程序中使用fork但是我想知道我是否可以使用Qt4提供的任何内容或任何可移植的方式存档相同的功能而无需使用一堆架构#ifdefs?
无论如何,我的目标是这个应用程序只有pthread实现,但我仍然希望保持与“本机”Qt API尽可能接近的程度.
我已经测试了QThread,并且线程中的segfaulting显然崩溃了整个应用程序,似乎QProcess只针对产生完全不同的可执行文件时使用.还有其他选择吗?
解决方法
Windows flat-out没有任何公共消费方式的fork(),因此没有Qt调用来模拟它;你需要做一些事情,比如开始使用特殊的命令行参数或其他东西.