在Qt中fork后获取进程的PID

2023-12-05

我正在创建一个成功分叉的 Qt/C++ 控制台应用程序。当我在 fork 之前调用 QCoreApplication::applicationPid() ,然后在 fork 之后(在子进程中)调用 QCoreApplication::applicationPid() 时,我得到相同的 pid。

我意识到我可以只使用 fork() 的返回值,但我正在尝试以 Qt 的方式做事。在 Qt 中是否有更好/正确的方法来获取子进程的 PID(从子进程内部)?

出于好奇,为什么 QCoreApplication::applicationPid() 不提供新的 PID?我认为它现在正在提供 ppid......


返回值fork()取决于你是在分叉中还是在父级中。看here:

成功时,子进程的 PID 将在父进程中返回,子进程中将返回 0。失败时,父进程返回 -1,不创建子进程,并适当设置 errno。

因此,您只能从父级中获取子级的 pidfork()(不是像你暗示的那样在孩子身上)。这实际上就是检查您是否在子进程中的方法——即返回值是否为 0。

Anyway:

没有办法forkQt 方式,因为分叉在所有平台(尤其是 Windows)上都是不可能的,因此 Qt 不能这样做。

另请注意,Qt 的某些部分在子进程中可能处于无效状态(例如,在 MacOSX 上,Cocoa GUI 不能在分叉进程中使用)。所以要小心。

我还没有真正找到 Qt 是否支持分叉的详细信息(我的意思是它的行为是理智的:例如,分叉中的线程列表会不同,所以它必须意识到这一点)。我已经问过了here.

QCoreApplication::applicationPid()可能会缓存该值,从而在子级中返回错误的值。但不用关心这个,只需使用getpid()相反 - 您已经在使用非跨平台fork().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Qt中fork后获取进程的PID 的相关文章

  • QPainter 性能高帧率

    我试图在 QPainter 中以 60fps 的速度显示视频 在 OpenGLwidget 中 我遇到一个问题 有时绘图花费的时间太长 并且在使用 QPainter 时发生下一个重绘事件 这会生成警告和随机崩溃 有几个问题 是否有一种 Qt
  • c 报告哪个信号终止了子进程

    我一直在广泛地研究 shell 现在我正在尝试升级此代码以报告子进程何时被信号 除 SIGINT 之外 终止 如果括号中发生了 核心转储 类似于 bash 我还尝试报告 核心转储 if test 1 cpid fork if cpid lt
  • 无法在 QGLWidget 中设置所需的 OpenGL 版本

    我正在尝试在 Qt 4 8 2 中使用 QGLWidget 我注意到 QGLWidget 创建的默认上下文不显示 OpenGL 3 1 以上的任何输出 Qt wiki 有一个教程 http qt project org wiki How t
  • 在 Qt 5 中嵌入 Python

    我想将 Python 解释器嵌入到 Qt 5 应用程序中 我在 Qt 5 中有一个工作应用程序 但是当我把 include
  • 无法将 QList 分配给 QString

    我遇到这个错误 Unable to assign QList
  • Qt 人工鼠标点击无法正常工作

    小玩具应用程序可以在这里找到 http gist github com 517445 http gist github com 517445 我正在尝试将人工鼠标事件发送到小部件 我使用QApplication sendEvent为此 接下
  • 如何使用 Qt DOM 通过此语法获取 xml 属性

    我正在使用 Qt DOM XML 解析器 并且遇到了如下属性定义的问题
  • 在没有加载器的情况下实例化内联组件

    有没有办法实例化内联Component 即在同一文件中定义 而不使用Loader 我不太关心使用的性能影响Loader因为我要用很多东西污染我的文件Loader包装纸 我发现从 JavaScript 创建动态 QML 对象 http doc
  • 如何在 OS X 上的 Qt 应用程序中设置应用程序图标,足以进行分发?

    跟进这个答案 https stackoverflow com a 20918932 368896 to 这个问题 https stackoverflow com questions 20909341 what is the fastest
  • QT:删除QGridLayout中QLabel之间的空格

    我将一些具有不同颜色的 QLabels 添加到 QGridLayout 作为 QWidget 的布局 现在我在每个 Qlabel 与下一个 Qlabel 之间有一个间距 我想将其删除 我尝试将标签的边距设置为 0 将 GridLayout
  • 清除pyqt中布局中的所有小部件

    有没有办法清除 删除 布局中的所有小部件 self plot layout QtGui QGridLayout self plot layout setGeometry QtCore QRect 200 200 200 200 self r
  • QML 中可重用的字体属性[重复]

    这个问题在这里已经有答案了 在 QML 中 我希望能够定义一组字体属性以进行简单的语义重用 例如 代替 Text text This is a header font family Encode Sans weight Font Black
  • 将 jstring 转换为 QString

    我正在调用一个返回字符串的 Java 函数 QAndroidJniObject obj QAndroidJniObject callStaticObjectMethod
  • 在 Qt 中使用多个不同的流读取同一文件

    使用 Qt 是否可以使用多个流读取文件以同时访问其中的不同数据部分 请注意 Qt 中的流 QTextStream QDataStream 不处理底层设备中的位置 流类只是一个包装器 用于更轻松地解析设备 QFile 实例 内的二进制数据 因
  • Qt:不完整类型和前向声明的使用无效

    我有一些误解 A h ifndef A H define A H include B h class A public B Q OBJECT public A endif A cpp include A h A A B ui gt blan
  • 如何从 Ruby 检查具有特定 pid 的进程是否正在运行?

    如果有多种方法 请列出 我只知道一个 但我想知道是否有一种更干净的 Ruby 方式 之间的区别Process getpgid and Process kill方法似乎是当 pid 存在但由另一个用户拥有时发生的情况 Process getp
  • PyQt4 信号和槽

    我正在使用 PyQt4 编写我的第一个 Python 应用程序 我有一个 MainWindow 和一个 Dialog 类 它是 MainWindow 类的一部分 self loginDialog LoginDialog 我使用插槽和信号 这
  • 无法运行 Qt 应用程序:找不到版本“Qt_5”

    我运行 Ubuntu 16 04 LTS 我的问题是我无法运行可以编译的 Qt5 应用程序 这是我尝试运行它时得到的结果 home user Desktop sconfig dist Release GNU Linux SCongif us
  • QFileSystemModel setRootPath

    我正在尝试创建一个 Qt 应用程序来显示文件夹 Mac OS 中的 Users 文件夹 的内容 这是代码 QFileSystemModel dirModel new QFileSystemModel dirModel gt setRootP
  • QML 列表视图拖放

    我想创建两个 qml 列表视图 可以执行两个功能 拖放一个列表中的项目以更改项目的顺序 跨列表拖放项目 项目将从一个列表中删除并添加到另一个列表中 根据 Qt 文档中的拖放示例 我决定创建两个访问同一列表模型的列表视图 列表模型中的每个项目

随机推荐

  • AWS-CDK:有什么方法可以通过输入参数传递vpc cidr?

    我正在尝试将 vpc cidr 作为输入参数传递 如下所示 import Stack StackProps Construct CfnParameter from aws cdk core import Vpc SubnetType fro
  • 现有的 DAO 代码可以在 SQL Server 上运行吗?

    如果我将数据从 Access MDB 传输到 SQL Server VB 应用程序中的 DAO 代码是否会针对 SQL Server 工作 我意识到需要对初始连接调用进行更改 但还有其他需要更改的地方吗 这里有很多问题 如果您使用 ADP
  • 如何为每个页面调用一个方法?

    我正在使用 Spring MVC 编写一个应用程序 我有一个从数据库返回值的方法 我想在网站的标题中显示这些值 显示在所有页面上 我怎样才能做到这一点 我需要在每个控制器中调用这个方法 声明一个类 ControllerAdvice注解 然后
  • 通过 TCP 读取嗅探数据

    我正在开发一个应用程序 该应用程序正在侦听传入电脑的数据并将其存储在数据库中 当我尝试使用任何嗅探软件时 它会解码数据并且我可以读取它 但在我的代码中 我根本无法阅读它 它的格式是这样的 18222621516223418171188155
  • Hibernate:有第三级缓存吗?

    在一次求职面试中 一位招聘人员问我 hibernate 中有多少级缓存 所以我描述了1级和2级 他说正确 但还有第三级缓存 例如缓存一些不经常更改的表的结果 如 CURRENCY 或 COUNTRY 并在每个 12 24 您想要的时间 小时
  • 使用纯 JavaScript 获取点击元素的索引

    我需要知道单击元素的索引 不知道该怎么做 for i 0 i lt document getElementById my div children length i document getElementById my div childr
  • 将训练数据拆分为每个类的相同行数

    我有一个非常大的数据集 大约有 314554097 行和 3 列 第三列是班级 该数据集有两个类 0 和 1 我需要将数据分为测试数据和训练数据 要分割我可以使用的数据 from sklearn cross validation impor
  • 处理 contentEditable DIV 上的换行符

    我有一个问题contenteditableSAFARI CHROME 上的换行符 当我在 contentEditable 上按 返回 时 div 而不是创建一个 br 如 Firefox 他们创建了一个新的 div div Somethin
  • PostgreSQL 在触发器函数中动态修改新记录中的字段

    我有一个包含 ID 和用户名 以及其他详细信息 的用户表 以及引用该表的其他几个表 其中包含各种列名称 CONSTRAINT some name FOREIGN KEY columnname REFERENCES user userid 我
  • 在 OpenCV 中复制像素值

    我有 RGB 图像 例如尺寸为 2x2 如下 0 14 255 75 156 255 45 255 234 236 141 255 我想将每个像素 所有 RGB 通道 复制 2x2 次并获得如下所示的图像 0 14 255 0 14 255
  • 什么是 Irvine32 库以及我们为什么使用它?

    我想知道Irvine32汇编语言库是什么 我想要一个定义以及我们为什么使用这个库 我想知道汇编语言中的 Irvine32 库是什么 Irvine32 库是有用函数的集合 您可以查看在线文档了解它们的列表和更多详细信息 我想要一个防御以及为什
  • Google 日历 API - 插入活动 - 通过电子邮件通知组织者

    使用 Google 日历 API 事件 插入 我代表用户在用户的日历中创建一个事件并将他们设置为组织者 我还邀请了一位客人 我希望组织者收到类似于来宾可能收到的电子邮件通知 我尝试使用 sendUpdates 参数 但它只通知客人 有没有办
  • 我们如何使用这些指令在汇编中使用跳转?

    据我所知 组装中的跳跃基本上是从一个位置到另一个位置 说我们有 804828f 74 05 je XXXXXXX 8048291 e8 1e 00 00 00 call 80482b4 根据这本书 我真正要做的就是将 0x05 添加到 80
  • Visual Studios 在构建项目时反复出现 PDB API 调用失败

    所以我有一个项目位于另一个目录中 我将其复制并移动到另一个目录中 以便将其转储到之前运行早期版本代码的本地 git 存储库中 我知道为什么我要很好地复制这些内容 这是一个很长的故事并且无关紧要 在尝试在 Visual Studios 201
  • 奇怪的错误,链接在 jquery 'tabs+accordion' 中不起作用[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我是新来的 到处寻找答案但找不到 我正在使用 Codecanyon 的这个很棒的选项卡
  • 用法相当不同

    我想在我的小型 Web 项目中使用这个出色的 Javascript 库 http prettydiff com 我已经下载了 PrettyDiff js 和 ViewDiff js 我一直在研究如何使用它 但似乎找不到任何有关如何获取 Ja
  • Composer 需要本地包

    我有几个正在协同开发的库 Foo 和 Bar 但在技术上仍然是独立的 以前我刚刚重新定义了自动加载器 Foo Foo src 但现在我已经向 Foo 添加了 Guzzle 依赖项 Bar 翻转了它的盖子 因为它不是它的依赖项之一 目录结构
  • Python中递归子集和

    我很乐意得到一些帮助 我有以下问题 我得到了一个数字列表seq和一个目标数字 我需要写两件事 返回的递归解决方案True如果存在等于目标数的子序列之和并且False否则 例子 subset sum 1 1 5 4 0 True subset
  • 正则表达式匹配不带连续空格的用户名

    我正在努力制作一个 javascript 正则表达式来满足以下要求 第一个字符必须是字母 a zA Z 其余的可以是任何字母 任何数字 连字符 点 下划线和空格 但没有连续的空格 例如 连续两个或多个空格 长度必须在 3 到 25 之间 含
  • 在Qt中fork后获取进程的PID

    我正在创建一个成功分叉的 Qt C 控制台应用程序 当我在 fork 之前调用 QCoreApplication applicationPid 然后在 fork 之后 在子进程中 调用 QCoreApplication applicatio