File indexing completed on 2024-05-19 03:56:25

0001 /*
0002 
0003     This file is part of the KDE Frameworks
0004 
0005     SPDX-FileCopyrightText: 2019 Tobias C. Berner <tcberner@FreeBSD.org>
0006 
0007     SPDX-License-Identifier: LGPL-2.1-only
0008 */
0009 
0010 #include "kprocesslist.h"
0011 #include "kprocesslist_unix_procstat_p.h"
0012 
0013 #include <QDir>
0014 #include <QProcess>
0015 
0016 using namespace KProcessList;
0017 
0018 // Determine UNIX processes by using the procstat library
0019 KProcessInfoList KProcessList::processInfoList()
0020 {
0021     KProcessInfoList rc;
0022 
0023     ProcStat pstat;
0024     if (!pstat) {
0025         return rc;
0026     }
0027 
0028     ProcStatProcesses procs(pstat);
0029     for (const auto &process_info : procs) {
0030         rc.push_back(process_info);
0031     }
0032 
0033     return rc;
0034 }
0035 
0036 KProcessInfo KProcessList::processInfo(qint64 pid)
0037 {
0038     KProcessInfoList processInfoList = KProcessList::processInfoList();
0039     auto testProcessIterator = std::find_if(processInfoList.begin(), processInfoList.end(), [pid](const KProcessList::KProcessInfo &info) {
0040         return info.pid() == pid;
0041     });
0042     return testProcessIterator != processInfoList.end() ? *testProcessIterator : KProcessInfo{};
0043 }