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

x33g5p2x  于2021-12-30 转载在 Linux  
字(1.0k)|赞(0)|评价(0)|浏览(566)

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

比如这样的shell:

  1. ps -eo pid,lstart | grep 1808

采用这样的方式:

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

这样也是可以的:

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

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

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

  1. 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中这么放就可以了。

  1. #include <QCoreApplication>
  2. #include <QProcess>
  3. #include <QDebug>
  4. #include <QDateTime>
  5. int main(int argc, char *argv[])
  6. {
  7. QCoreApplication a(argc, argv);
  8. QProcess p;
  9. 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\"");
  10. p.waitForFinished();
  11. QString read = p.readAll().trimmed();
  12. qDebug() << read;
  13. return a.exec();
  14. }

运行截图:

相关文章

最新文章

更多