首页 > 编程知识 正文

qprocess关闭进程,管道就是将前一个命令的

时间:2023-05-06 18:03:39 阅读:28115 作者:3823

开始(; //启动进程的技能(); //将数据写入已启动的外部进程wirte ()//外部进程readAllStandardOutput ); //读取来自外部的标准输出readAllStandardError (; //读取外部进程错误消息的cmd=newqprocess(this ); 连接(cmd,signal(readyreadstandardoutput (),this,slot ) on_readoutput ) )连接(cmd,signal ) readyrerect void主窗口:3360 on _ read output ({ ui-textedit-append (cmd-readallstandardoutput ).data ) }; //将输出信息导入编辑框(void main window 3360: on _ read error ) qmessagebox 33603360 information (0,' error ',cmd-read all ) //启动终端(在Windows上更改为cmd ) cmd-waitForStarted ); //等待启动完成的cmd-write(lsn ); 注意//向终端写入“ls”命令,不能省略末尾的“n”。 //QProcess启动的外部程序不会随着QT程序的关闭而关闭。 //因此,在窗口的废弃函数中输入以下代码,以便在窗口废弃时外部进程也一起结束。 if(cmd ) ) { cmd-close; 针对finished (; } QProcess处理带管道的壳

qprocess:3360start(//无阻塞QProcess:execute )//阻塞QProcess:readAll )//读取结果//带参数的qprocess 33603360 str ' '; 处理开始('./winmerge/winmerge u.exe ',str ); //结束时if (处理) {处理-关闭); 删除流程; 处理=0; //NULL}//替代操作QStringList qsl; QSL.append('./c ' ); qsl='162.105.74.15 '; pro=newqprocess(qsl; qdirdir ()/home/Wujin ); 预配置目录(dir; if (预启动() ) printf ) )确定 n ); 电子打印(somethingiswrong (n ) ); 一、无QProcess管道运行并取得结果的QProcess *proc=new QProcess (); qtringqcmd=' find./-name *.so-print0| xargs-0 objdump-x|grep-OE' t _ [0- 9,a-f,a-f ] {4} 先进等待(1000 ) ) qbytearrayqoutput=先进等待标准输出(proc-readallstandardoutput ); qlistqbytearraylist=q output.split ((n ) ); qistqbytearray :3360 iterator itor=list.begin (; for (; itor!=list.end (; itor () { q字节矩阵itor; qDebug () strline; )二、QProcess执行带管道命令的管道符号由shell解析处理。 上述使用方法对应于两个shell命令,不能由一个QProcess处理。 需要以下方法:

process.start('bash ',QStringList ) (-c' 'cat file | grep string ); 质量列表选项; options '-c ' ' find./-name *.so-print0| xargs-0 objdump-x|grep-OE' t _ [0- 9,a-f,a-f ] {4} proc-start () /苹果项链/bash )、选项); 质量列表选项; 选项“- c”“ls-l”qprocess process; process.start () /苹果项链/bash )、options ); process.waitForFinished (; process.waitForReadyRead (; //process.close (; 三、向QProcess添加退出信号,生成的void main window :3360开放进程((p-start )、cmd.exe )、QStringList )、/c' 'dir ); 连接(p,信号)完成(int )、this,slot )就绪(readresult ) int ); } void主窗口:3360 readresult (int exit code ) if ) exitcode==0) qtext codec * gbk codec=qtext codec 33603360编码矩阵编码qessagebox :3360信息(this,' dir ',result ); }连接(m process,signal(readyreadstandardoutput ()、this,slot (redfromstdout ) ); connect(mprocess,signal(readyreadstandarderror ()、this、slot (redfromstderr ) ) connect(mprocess,signal (ed ) slot ) processerror ) qprocess 33603360 process connect (m process,signal(finished(int,qprocess3360:exitstatus ),TT qprocess voidfloodforecast :3360 redfromstdout ({ ui.text browse-append (m process.readallstandardoutput ) }; } voidfloodforecast :3360 redfromstderr () ui.text browse-append (m process.readallstandarderror ); } voidfloodforecast :3360处理器(qprocess :3360处理器) if (error==qprocess 33603360 failedtoserroror voidfloodforecast :3360 process finished (int exit code,qprocess 33603360 exitstatusexitstatus ) if (exit status===} else rn ); }四、QProcess调用cmd时,请注意特殊符号的转义。 如果windows cmd中有“ ^ |”,请使用转义符号“^”:

^=^ ^=^ ^ ^ ^=' ^ ^ ^ ^ ^=^ ^ ^ ^=^ ^ qstring program=' cmd.exe '; 质量列表协议; arguments getenv (vs90公共工具((vs vars 32.bat ) )、VC build.exe ' pathtosolution ' debug ^|win32 '; qrocess :3360执行(程序,协议); 五、结果实时回波Qt QProocess执行终端命令,实时输出回波

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。