QProcess使用执行命令并获取结果。

常数
价值
描述
Q进程::分离通道QProcess::SeparateChannels
0
QProcess管理正在运行的进程的输出,将标准输出和标准错误数据保存在单独的内部缓冲区中。您可以通过调用setReadChannel()来选择QProcess的当前读取通道。这是QProcess的默认通道模式。
Q进程::合并的通道QProcess::MergedChannels
1.
QProcess将正在运行的进程的输出合并到标准输出通道(stdout)中。标准错误通道(stderr)将不会接收到任何数据。正在运行的进程的标准输出和标准误差数据是交错的。
Q进程::转发频道QProcess::ForwardedChannels
2.
QProcess将正在运行的进程的输出转发到主进程上。子进程写入其标准输出和标准错误的任何内容都将写入主进程的标准输出和标准错误。
QProcess::ForwardedErrorChannel
4.
QProcess管理正在运行的进程的标准输出,但将其标准错误转发到主进程。这反映了命令行工具作为过滤器的典型使用,其中标准输出被重定向到另一个进程或文件,而标准错误被打印到控制台以进行诊断。(该值在第5.2季度引入。)
Q进程::QProcess::ForwardedOutputChannel
3.
对ForwardedErrorChannel的补充。(该值在第5.2季度引入。)
注意:Windows有意抑制仅GUI应用程序向继承控制台的输出。这不适用于重定向到文件或管道的输出。然而,要在控制台上转发仅GUI应用程序的输出,您必须使用SeparateChannels,并通过读取输出并将其写入适当的输出通道来自己进行转发。
linux下查询端口进程

//netstat -ano | grep 9999
//netstat -lntp |  grep 5000  //tcp
//netstat -tunlp |  grep 9999 //udp
//netstat -ntulp |grep 端口号
//netstat -pan | grep 端口号

linux下对终端输入命令
查询端口

m_process = new QProcess();
m_process->setProcessChannelMode(QProcess::MergedChannels);

m_process->start("bash",QStringList() << "-c" << "sudo -S lsof -i:5555");
 m_process->waitForStarted();       //阻塞,等待bash启动完毕
 m_process->waitForFinished();
 QString str = m_process->readAll(); //返回数据

查询应用

pid_t getProcessPidByName(const char *proc_name)
{
     FILE *fp;
     char buf[100];
     char cmd[200] = {'\0'};
     pid_t pid = -1;
     sprintf(cmd, "pidof %s", proc_name);
     if((fp = popen(cmd, "r")) != NULL)
     {
         qDebug()<<cmd;
         if(fgets(buf, 255, fp) != NULL){
             pid = atoi(buf);
            qDebug()<<buf;
         }

     }
     pclose(fp);
     return pid;
}

wind下对终端输入命令

m_process = new QProcess();
m_process->setProcessChannelMode(QProcess::MergedChannels);
"tasklist | findstr FeiQ"//通过应用名称查询进程
 m_process->start("cmd", QStringList()<<"/c"<<"tasklist | findstr FeiQ");
    m_process->waitForStarted();       //阻塞,等待bash启动完毕
 m_process->waitForFinished();
    QString strRet = m_process->readLine();

Qt中start和kill正确用法

#linux
m_process->start("\"/home/linux/Desktop/server\"");
#win
m_process->start("\"C:\\data\\Desktop\\server.exe\"");

m_process->kill();//kill要关闭应用应用启动时语言中要加上\"路径/应用名称\"

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值