我实现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();
...
答案 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将使用应用程序的当前工作目录。