mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-25 23:21:33 +03:00
service: when guessing the main PID don't consider processes that aren't our children
This commit is contained in:
parent
3185a36b05
commit
2633eb8317
15
src/cgroup.c
15
src/cgroup.c
@ -403,7 +403,7 @@ char *cgroup_bonding_to_string(CGroupBonding *b) {
|
||||
|
||||
pid_t cgroup_bonding_search_main_pid(CGroupBonding *b) {
|
||||
FILE *f;
|
||||
pid_t pid = 0, npid;
|
||||
pid_t pid = 0, npid, mypid;
|
||||
|
||||
assert(b);
|
||||
|
||||
@ -413,15 +413,22 @@ pid_t cgroup_bonding_search_main_pid(CGroupBonding *b) {
|
||||
if (cg_enumerate_processes(b->controller, b->path, &f) < 0)
|
||||
return 0;
|
||||
|
||||
mypid = getpid();
|
||||
|
||||
while (cg_read_pid(f, &npid) > 0) {
|
||||
pid_t ppid;
|
||||
|
||||
if (npid == pid)
|
||||
continue;
|
||||
|
||||
/* Ignore processes that aren't our kids */
|
||||
if (get_parent_of_pid(npid, &ppid) >= 0 && ppid != mypid)
|
||||
continue;
|
||||
|
||||
if (pid != 0) {
|
||||
/* Dang, there's more than one PID in this
|
||||
* group, so we don't know what process is the
|
||||
* main process. */
|
||||
/* Dang, there's more than one daemonized PID
|
||||
in this group, so we don't know what process
|
||||
is the main process. */
|
||||
pid = 0;
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user