Loading libprocessgroup/include/processgroup/processgroup.h +5 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,11 @@ int killProcessGroup(uid_t uid, int initialPid, int signal, int* max_processes = // that it only returns 0 in the case that the cgroup exists and it contains no processes. int killProcessGroupOnce(uid_t uid, int initialPid, int signal, int* max_processes = nullptr); // Sends the provided signal to all members of a process group, but does not wait for processes to // exit, or for the cgroup to be removed. Callers should also ensure that killProcessGroup is called // later to ensure the cgroup is fully removed, otherwise system resources may leak. int sendSignalToProcessGroup(uid_t uid, int initialPid, int signal); int createProcessGroup(uid_t uid, int initialPid, bool memControl = false); // Set various properties of a process group. For these functions to work, the process group must Loading libprocessgroup/processgroup.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -542,6 +542,15 @@ int killProcessGroupOnce(uid_t uid, int initialPid, int signal, int* max_process return KillProcessGroup(uid, initialPid, signal, 0 /*retries*/, max_processes); } int sendSignalToProcessGroup(uid_t uid, int initialPid, int signal) { std::string hierarchy_root_path; if (CgroupsAvailable()) { CgroupGetControllerPath(CGROUPV2_CONTROLLER_NAME, &hierarchy_root_path); } const char* cgroup = hierarchy_root_path.c_str(); return DoKillProcessGroupOnce(cgroup, uid, initialPid, signal); } static int createProcessGroupInternal(uid_t uid, int initialPid, std::string cgroup, bool activate_controllers) { auto uid_path = ConvertUidToPath(cgroup.c_str(), uid); Loading Loading
libprocessgroup/include/processgroup/processgroup.h +5 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,11 @@ int killProcessGroup(uid_t uid, int initialPid, int signal, int* max_processes = // that it only returns 0 in the case that the cgroup exists and it contains no processes. int killProcessGroupOnce(uid_t uid, int initialPid, int signal, int* max_processes = nullptr); // Sends the provided signal to all members of a process group, but does not wait for processes to // exit, or for the cgroup to be removed. Callers should also ensure that killProcessGroup is called // later to ensure the cgroup is fully removed, otherwise system resources may leak. int sendSignalToProcessGroup(uid_t uid, int initialPid, int signal); int createProcessGroup(uid_t uid, int initialPid, bool memControl = false); // Set various properties of a process group. For these functions to work, the process group must Loading
libprocessgroup/processgroup.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -542,6 +542,15 @@ int killProcessGroupOnce(uid_t uid, int initialPid, int signal, int* max_process return KillProcessGroup(uid, initialPid, signal, 0 /*retries*/, max_processes); } int sendSignalToProcessGroup(uid_t uid, int initialPid, int signal) { std::string hierarchy_root_path; if (CgroupsAvailable()) { CgroupGetControllerPath(CGROUPV2_CONTROLLER_NAME, &hierarchy_root_path); } const char* cgroup = hierarchy_root_path.c_str(); return DoKillProcessGroupOnce(cgroup, uid, initialPid, signal); } static int createProcessGroupInternal(uid_t uid, int initialPid, std::string cgroup, bool activate_controllers) { auto uid_path = ConvertUidToPath(cgroup.c_str(), uid); Loading