QT:如何写入文件有关进程的其他信息(PID,文件路径......)?

时间:2013-11-21 16:02:22

标签: qt

我实现Qt程序,它将启动的进程写入文件,但只有进程的名称,但我需要另一个信息(PID,时间处理器,文件路径)。此代码适用于名称。如果我想要其他信息,我必须改变或添加什么?感谢

    ...
    process.setReadChannel(QProcess::StandardOutput);
    process.setReadChannelMode(QProcess::MergedChannels);
    process.start("wmic.exe /OUTPUT:STDOUT PROCESS get Caption");
    process.start("cmd", QStringList() << "/C" << "echo" << "process" << "get" << "caption" << "|" << "wmic");

    process.waitForStarted(1000);
    process.waitForFinished(1000);
    QByteArray list = process.readAll();
    ...

1 个答案:

答案 0 :(得分:0)

我看到你用什么工具来做它。如果不需要精确使用qt, 您可以在Windows上尝试tasklist命令,或者在Linux上尝试顶级。

否则,请尝试以下方法:

QProcess::systemEnvironment()

以key = value对的列表的形式返回调用进程的环境。例如:

 QStringList environment = QProcess::systemEnvironment();
 // environment = {"PATH=/usr/bin:/usr/local/bin",
 //                "USER=greg", "HOME=/home/greg"}

此功能不会缓存系统环境。因此,如果调用了setenv ot putenv等低级C库函数,则可以获得更新版本的环境。

但请注意,重复调用此函数将重新创建环境变量列表,这是一项非常重要的操作。

QProcess::pid()

返回正在运行的进程的本机进程标识符(如果有)。如果当前没有进程正在运行,则返回0。

QProcess::workingDirectory()

如果已为QProcess分配了工作目录,则此函数将返回QProcess在程序启动之前将进入的工作目录。否则,(即,没有分配目录),返回一个空字符串,而QProcess将使用应用程序的当前工作目录。