问题标签 [qprocess]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multithreading - QProcess, QEventLoop - 可用于并行处理
我想知道是否可以使用 QEventLoop (QProcess?) 来并行化对 Qt 同一函数的多个调用。QtConcurrent 或 QThread 究竟有什么区别?更准确地说,什么是流程和事件循环?我读到 QCoreApplication 必须在 main() 方法中尽早 exec() ,所以我想知道为什么它与主线程不同。
您能否指出对 Qt 进程和线程的一些有效参考?我是通过官方文档来的,这些事情仍然不清楚。
谢谢并恭祝安康。
qt - 在 textBrowser 中实时显示 QProcess 输出
我是 qt 开发的新手,我想将 QProcess 的输出实时传输到 textBrowser。我从执行一个简单的 echo 命令开始,但没有显示程序的输出。我究竟做错了什么????
PS我在一台linux机器上。
编辑:我仍然无法在 textBrowser 中获得输出。
我更改了 Qprocess 参数并尝试了 waitForStarted() 和 waitForReadyRead() ,以便进程及时启动并且结果可用。
我添加了 waitForFinished() 以便进程在超出范围时不会终止。
linux - 使用 Qt 检查可用的文件句柄以避免 SIGBUS 错误
我在多线程 Qt 控制台应用程序中使用 QProcess。在运行时我得到了大约 250 个连接线程,每个连接线程都使用一个 DB 连接并使用 QProcess 对象执行一个 shell 命令。
我的ulimit -n
节目 1024(=管道或文件句柄可用)。我想我在这里达到了极限,改变它只会推迟问题。我需要对此进行适当的错误处理(而不是 SIGBUS 崩溃)。在开始 QProcess 之前,如何检查可用的管道号?
非常感谢您的任何提示。
尖刺
来自 Qt 来源的 qprocess_unix.cpp 引用的代码:
代码在该行崩溃FD_SET(childStartedPipe[0], &fds);
...
这是调用 QProcess 的函数:
c++ - Qt:无法使用 QProcess 启动 Windows 控制台
QProcess 根本不显示黑色控制台窗口。
这是我使用的代码:
将 cmd.exe 替换为 calc.exe 会成功启动计算器。
qt - Qt的QProcess在退出后仍然认为进程正在运行
我正在使用 QProcess 从libs3运行 s3 程序。
但是,每次我运行此代码时,waitForFinished 方法都会等待整整 30 秒,然后我得到以下输出:
我可以看到在 waitForFinished 超时之前,S3 进程显然没有在 Activity Monitor.app 中运行。这是怎么回事?
c++ - 当路径中有空格时,从与 Qt 应用程序相同的目录启动可执行文件
我想在我的 Qt 应用程序中按下按钮时启动一个可执行文件。它.exe
始终与 Qt 应用程序本身位于同一目录中。
有时此目录的路径中有空格。这似乎阻止了.exe
启动。
这是我的代码(似乎不起作用):
我不知道是否可以在.exe
不先显示命令提示符的情况下启动。当.exe
运行时,我必须关闭 Qt 应用程序,同时.exe
继续运行。
python - 如何在 PySide 中获取 QProcess 运行的命令的输出?
我想知道如何在 PySide 中捕获 QProcess 运行的命令的输出,以便显示它。
python - 无法在python中使用QProcess获取文件输出
我需要: 1. 在日志文件中捕获进程的输出,但是 2. 将其分离,因为该程序可能需要数小时(或数天)。
显然,如果你使用 QProcess.startDetached(command),你会丢失你的 StandardOutput,所以
不起作用。
确实有效,但我负担不起捆绑费用。还
不起作用。它将“> logfile”视为“my_command”的非法选项
这是在 Linux 上
问题是当调用程序关闭时“my_command”会死掉。nohup 似乎没有帮助。(不知道为什么)。
c++ - 在主程序和 QProcess 之间同步输出?
我正在构建一个程序来执行一些用户测试,并且需要以非常小的间隔(每 10 毫秒)记录他们正在做什么的数据。大部分数据都可以从 QT 中找到,但不幸的是我需要使用单独的程序来计算鼠标移动(即使鼠标已经碰到屏幕边缘,我也需要获取移动,但 QT 只是忽略了屏幕外移动)。
因此,我构建了一个处理低级鼠标输入并输出检测到的坐标变化的 Windows 程序。然而,问题是我无法从 Windows 程序中获取数据以与主程序的输出保持一致。
在我的主程序中,我使用以下代码。
readMouseData 函数看起来像这样。
其中一些东西可能是不必要的。我添加了“MergedChannels”模式和“DirectConnection”位以尝试解决问题。
我得到的结果是,windows 程序的输出每 100 毫秒左右以大块的形式出现,而不是在它发生时立即插入到文件流中。似乎某处有一个缓冲区需要填充,或者在处理 readyRead() 信号之前存在延迟。有人对我如何实时获取主程序和 QProcess 的输出有任何建议吗?(嗯,至少延迟小于 10 毫秒)。
此外,如果它很重要,我正在运行 Windows 7 并使用 MinGW 编译主程序,使用 Visual Studio 2008 编译检测鼠标移动的 Windows 程序。windows中的输出如下所示:
让我知道是否需要更多信息。
谢谢,-基兰
c++ - QProcess::terminate() 不适用于简单的 Qt 应用程序作为 Windows XP 下的子进程
首先,我将从 QProcess 对象开始的简单 Qt 应用程序:
现在,带有 QProcess 对象的 Qt 应用程序:
行为:terminate() 导致子进程的窗口消失(并从 XP 任务栏中),但根据 taskman,该进程仍在运行。由于while (!process.waitForFinished(500))
QProcess 对象从不发出finished(),所以循环永远存在。令人惊讶的是,我从子进程(它只打印QProcess::readAllStandard...()
调用的空字符串)中没有得到任何关于 stdin 或 stderr 的信息,这看起来很奇怪,因为子进程的顶部窗口关闭让我认为 closeEvent() 在子进程中被调用。
使用 QProcess::kill() 终止子进程是可行的,但我不想使用它,因为它不会让子进程有机会在退出之前进行清理。
有趣的是,同样的代码在 Qt 4.7.4 和 OS X 10.6.x 下可以正常工作 - terminate() 导致子进程干净地退出,所以我不确定在 XP 下我做错了什么。谢谢。