Qt笔记-QProcess带管道符号运行及获取进程启动时间(Linux)

Posted IT1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt笔记-QProcess带管道符号运行及获取进程启动时间(Linux)相关的知识,希望对你有一定的参考价值。

这里不能用直接写到QProcess中start中的command参数。

比如这样的shell:

ps -eo pid,lstart | grep 1808

采用这样的方式:

QProcess p;
p.start("sh", QStringList() << "-c" << "ps -eo pid,lstart | grep 1808");
p.waitForFinished();

这样也是可以的:

QString cmd = "ps -ef | awk 'print $2,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17'";
QProcess p;
p.start("bash", QStringList() << "-c" << cmd);

即可获取。但看下这条命令:

这个时间的输出对中国人来说很不友好,在此改变下。

 date -d "`ps -eo lstart,pid,cmd | grep 1808 | grep -v grep | awk 'print $1,$2,$3,$4,$5'`" "+%Y-%m-%d:%H:%M:%S"

 linux输出如下:

 需要的就是这个,在QProcess中这么放就可以了。

#include <QCoreApplication>
#include <QProcess>
#include <QDebug>
#include <QDateTime>

int main(int argc, char *argv[])

    QCoreApplication a(argc, argv);

    QProcess p;
    p.start("sh", QStringList() << "-c" << "date -d \\"`ps -eo lstart,pid,cmd |grep 1808|grep -v grep|awk 'print $1,$2,$3,$4,$5'`\\" \\"+%Y-%m-%d %H:%M:%S\\"");
    p.waitForFinished();

    QString read = p.readAll().trimmed();
    qDebug() << read;

    return a.exec();

运行截图:

以上是关于Qt笔记-QProcess带管道符号运行及获取进程启动时间(Linux)的主要内容,如果未能解决你的问题,请参考以下文章

Qt笔记-QProcess切换用户执行进程(Linux)

QT软件开发: QProcess启动进程完成交互并获取输出

Qt QProcess

我的QT Creator学习笔记(三十六)——进程和线程

我的QT Creator学习笔记(三十六)——进程和线程

qt怎么查看当前正在执行的代码