启动 QProcess 并一次读取一行输出
Starting QProcess and reading its output one line at a time
Qt中读取子进程输出的首选方法是什么,一次读取一行?
我尝试将QProcess信号readyReadStandardOutput连接到调用QProcess方法readLine的函数。
首选方法是异步方式,使用 QIODevice
发出的信号。你的方法是正确的。确保读取插槽内的所有可用行:
process->setReadChannel(QProcess::StandardOutput);
while (process->canReadLine()) {
QString line = QString::fromLocal8bit(process->readLine());
...
}
还要记住,一旦你读了某些东西,就不能再读了。 QIODevice
的信号需要谨慎使用 - 您不能将任意数量的消费者连接到readyRead
信号并在每个信号中执行读取。它不会按照您预期的方式工作。如果第一个读取器读取所有数据,则后续读取器将无法再次读取它。
可能的实现:
QProcess proc;
proc.start("/usr/bin/tegrastats");
QString line;
while(proc.waitForReadyRead())
{
line = QString::fromUtf8(proc.readLine());
qDebug() << line;
}
相关文章:
- 我没有得到产量最低的产品.我该如何纠正它?最后一行是最低销售产品的输出.谢谢
- 为什么这一行不输出我的文本文件?
- 无法在同一行上获取输出,在 C++ 中两个输出之间有空格
- Codelite构建仅呈现最后一行的输出
- 为什么我在输出的开头多了一行
- 使用 getline 从输入文件读取一行到输出文件
- 当存在一行时,Cppcheck 不会输出警告:auto lambda = [](){};
- C++/SQLite只输出一行数据
- 在一行C 中,该代码后缀和前缀的输出的逻辑是什么
- 在输出时,我对如何将数量和单词组合在一行感到非常困惑
- 输出一行向量
- 最后一行欧普特两个组合输出问题?如果其他语句
- 循环遍历CreateProcess输出的每一行
- scanf() 为最后一行输入提供错误的输出
- 如何让控制台在输入一行文本时输出某些内容
- Arduino:AT命令-使用serial.Read()读取串行输出的最后一行
- 指针问题:添加一行代码时输出奇数函数
- 为什么我的重载<<运算符没有输出最后一行?
- 启动 QProcess 并一次读取一行输出
- 有没有办法C++让循环的输出显示在同一行上