gpt4 book ai didi

c++ - 与 QProcess 交互的问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:49:00 25 4
gpt4 key购买 nike

我正在使用 QProcesses 在 C++ 应用程序中运行 shell 命令。其中一个命令是 apt-get install 命令。我将 readyread 信号连接到一个方法,该方法从进程中读取并将其附加到 UI 上的文本区域。

我的问题是,当 apt-get install 命令开始运行时,通常询问“Do you want to continue? [Y/n]”的行从未出现。我的读取行函数读取的最后一行是前一行。 QProcess 没有完成,暗示它正在等待输入。

为什么我的 QProcess 等待输入而不打印提示?我该如何处理这种情况?我曾尝试使用 QProcess::write 向其写入“Y”,但没有任何效果。

示例代码:

installPackage = new QProcess(this);
QString programStr = "sudo apt-get -f install";
installPackage->setProcessChannelMode(QProcess::MergedChannels);

connect(installPackage, &QProcess::readyRead,this, &MainWindow::readline);

connect(installPackage, static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished),
[=](){
MessageBox->append("\n\nOperation Complete.");
});

installPackage->start(programStr);




void readline(){
while(installPackage->canReadLine()){
QString line = installPackage->readLine();
MessageBox->append(line);
if(line.contains("[Y/n]")) //never evaluates true
installPackage->write("Y");
}
}

编辑:我使用 -y 选项使 apt-get 自动对提示回答"is",但我仍然想知道为什么提示没有出现

最佳答案

您已经编写了readLine(),但是该行还没有结束。运行 apt-get install 时只要看一下光标所在的位置就可以注意到:它不在下一行,而是在 [Y/n] 附近。

cat 命令可以显示行尾:apt-get install brasero | cat -E.

所以 cat 成功地读取了它。应该可以使用某种 block 读取模式(如 read())来读取该文本。

关于c++ - 与 QProcess 交互的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49949309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com