首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Qt4应用程序中实现"fork()“的便携方式?

在Qt4应用程序中实现"fork()“的便携方式?
EN

Stack Overflow用户
提问于 2009-06-08 21:33:45
回答 4查看 5.8K关注 0票数 7

比如说,我需要运行一堆容易崩溃的代码,所以我需要在不同的进程上运行它。通常我会这样做:

代码语言:javascript
运行
复制
  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。

我测试过QThread,线程中的分段故障显然会使整个应用程序崩溃,而且QProcess似乎只在生成完全不同的可执行文件时使用。还有别的选择吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-06-09 00:13:59

Windows call out没有任何可公开使用的fork(),因此没有Qt调用来模拟它;您需要执行一些操作,比如使用特殊的命令行参数或其他方法启动自己。

票数 7
EN

Stack Overflow用户

发布于 2009-06-09 00:10:39

我认为你应该使用QtConcurrent,因为它是Qt中最高级的多线程编程接口。这样你的代码就会更简单、更整洁。

由于这是一个高级API,它可能是在您已经尝试过的低级API之上实现的,因此这可能无法解决您的问题。

票数 3
EN

Stack Overflow用户

发布于 2009-06-08 21:37:23

你有没有尝试过try...catch语句&弄清楚如何避免崩溃?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/967141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档