parent
136e3e068c
commit
0952dbc648
@ -1,63 +0,0 @@
|
|||||||
From: Bernhard Rosenkraenzer <bero@lindev.ch>
|
|
||||||
Date: Sat, 17 Dec 2022 17:34:17 +0800
|
|
||||||
Subject: Use procps-ng 4.0.0
|
|
||||||
|
|
||||||
---
|
|
||||||
CMakeLists.txt | 2 +-
|
|
||||||
lxqt-session/src/procreaper.cpp | 19 ++++++++++++-------
|
|
||||||
2 files changed, 13 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
||||||
index a3c5e0d..45992a0 100644
|
|
||||||
--- a/CMakeLists.txt
|
|
||||||
+++ b/CMakeLists.txt
|
|
||||||
@@ -35,7 +35,7 @@ find_package(X11 REQUIRED)
|
|
||||||
message(STATUS "Building with Qt${Qt5Core_VERSION}")
|
|
||||||
find_package(PkgConfig REQUIRED)
|
|
||||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
||||||
- pkg_search_module(PROCPS REQUIRED libprocps)
|
|
||||||
+ pkg_search_module(PROCPS REQUIRED libproc2)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Please don't move, must be after lxqt
|
|
||||||
diff --git a/lxqt-session/src/procreaper.cpp b/lxqt-session/src/procreaper.cpp
|
|
||||||
index 2acd030..495267e 100644
|
|
||||||
--- a/lxqt-session/src/procreaper.cpp
|
|
||||||
+++ b/lxqt-session/src/procreaper.cpp
|
|
||||||
@@ -29,7 +29,7 @@
|
|
||||||
#include "log.h"
|
|
||||||
#if defined(Q_OS_LINUX)
|
|
||||||
#include <sys/prctl.h>
|
|
||||||
-#include <proc/readproc.h>
|
|
||||||
+#include <libproc2/pids.h>
|
|
||||||
#elif defined(Q_OS_FREEBSD)
|
|
||||||
#include <sys/procctl.h>
|
|
||||||
#include <libutil.h>
|
|
||||||
@@ -109,16 +109,21 @@ void ProcReaper::stop(const std::set<int64_t> & excludedPids)
|
|
||||||
const pid_t my_pid = ::getpid();
|
|
||||||
std::vector<pid_t> children;
|
|
||||||
#if defined(Q_OS_LINUX)
|
|
||||||
- PROCTAB * proc_dir = ::openproc(PROC_FILLSTAT);
|
|
||||||
- while (proc_t * proc = ::readproc(proc_dir, nullptr))
|
|
||||||
+ struct pids_info *info = NULL;
|
|
||||||
+ enum pids_item items[] = { PIDS_ID_PPID, PIDS_ID_TGID };
|
|
||||||
+ enum rel_items { rel_ppid, rel_tgid };
|
|
||||||
+ struct pids_stack *stack;
|
|
||||||
+ procps_pids_new(&info, items, 2);
|
|
||||||
+ while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY)))
|
|
||||||
{
|
|
||||||
- if (proc->ppid == my_pid)
|
|
||||||
+ const int ppid = PIDS_VAL(rel_ppid, s_int, stack, info);
|
|
||||||
+ if (ppid == my_pid)
|
|
||||||
{
|
|
||||||
- children.push_back(proc->tgid);
|
|
||||||
+ const int tgid = PIDS_VAL(rel_tgid, s_int, stack, info);
|
|
||||||
+ children.push_back(tgid);
|
|
||||||
}
|
|
||||||
- ::freeproc(proc);
|
|
||||||
}
|
|
||||||
- ::closeproc(proc_dir);
|
|
||||||
+ procps_pids_unref(&info);
|
|
||||||
#elif defined(Q_OS_FREEBSD)
|
|
||||||
int cnt = 0;
|
|
||||||
if (kinfo_proc *proc_info = kinfo_getallproc(&cnt))
|
|
Loading…
Reference in new issue