我构建了一个通过C ++ Qt GUI执行linux命令的应用程序 我从文件中读取并正常显示输出 但有时文件的输出是data ="" 并且 - 在终端中正常显示的输出 - 显示在应用程序输出中 所以 我想获得Qwidget的应用程序输出,例如QTextEdit
像
cat :: / home / user / Desktop:是广告目录,
我用它的功能是
QString operation :: commands(std::string usercommand){
const char * convertor = userCommand.c_str();
string data;
FILE *f =popen(convertor,"r");
char buffer [1024];
while (fgets(buffer,sizeof(buffer)-1,f)!=NULL){data=data+buffer;}
pclose(f);
QString returning = QString::fromStdString(data); return returning; }
答案 0 :(得分:1)
如果您正在使用Qt,则应使用QProcess
QString operation::commands(QString program)
{
QProcess process;
process.start(program);
while (process.waitForFinished()){
;
}
QString resp = QString::fromLocal8Bit(process.readAllStandardOutput());
QString error = QString::fromLocal8Bit(process.readAllStandardError());
return resp + error;
}
使用:
QString usercommand = "cat /home/user/Desktop";
commands(usercommand);