说,我需要运行一堆容易崩溃的代码,因此我需要在其他进程上运行它。通常,我会这样:

  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调用来模拟它。您需要执行一些操作,例如从特殊的命令行参数开始或类似的操作。

07-28 01:33
查看更多