常数
价值
描述
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要关闭应用应用启动时语言中要加上\"路径/应用名称\"