mirror of
https://github.com/nuintun/command-manager.git
synced 2025-06-07 03:14:07 +08:00
Update thread-kill.js
This commit is contained in:
parent
48918f7010
commit
be37770b3e
@ -61,11 +61,14 @@ function killAll(tree, signal, callback){
|
|||||||
tree[pid].forEach(function (pidpid){
|
tree[pid].forEach(function (pidpid){
|
||||||
if (!killed[pidpid]) {
|
if (!killed[pidpid]) {
|
||||||
killPid(pidpid, signal);
|
killPid(pidpid, signal);
|
||||||
|
|
||||||
killed[pidpid] = 1;
|
killed[pidpid] = 1;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!killed[pid]) {
|
if (!killed[pid]) {
|
||||||
killPid(pid, signal);
|
killPid(pid, signal);
|
||||||
|
|
||||||
killed[pid] = 1;
|
killed[pid] = 1;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -76,6 +79,7 @@ function killAll(tree, signal, callback){
|
|||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (callback) {
|
if (callback) {
|
||||||
return callback();
|
return callback();
|
||||||
}
|
}
|
||||||
@ -84,8 +88,7 @@ function killAll(tree, signal, callback){
|
|||||||
function killPid(pid, signal){
|
function killPid(pid, signal){
|
||||||
try {
|
try {
|
||||||
process.kill(parseInt(pid, 10), signal);
|
process.kill(parseInt(pid, 10), signal);
|
||||||
}
|
} catch (error) {
|
||||||
catch (error) {
|
|
||||||
if (error.code !== 'ESRCH') throw error;
|
if (error.code !== 'ESRCH') throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -103,7 +106,7 @@ function buildProcessTree(parentPid, tree, pidsToProcess, spawnChildProcessesLis
|
|||||||
|
|
||||||
if (code !== 0) {
|
if (code !== 0) {
|
||||||
// no more parent processes
|
// no more parent processes
|
||||||
if (Object.keys(pidsToProcess).length == 0) {
|
if (Object.keys(pidsToProcess).length === 0) {
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@ -111,9 +114,12 @@ function buildProcessTree(parentPid, tree, pidsToProcess, spawnChildProcessesLis
|
|||||||
|
|
||||||
allData.match(/\d+/g).forEach(function (pid){
|
allData.match(/\d+/g).forEach(function (pid){
|
||||||
pid = parseInt(pid, 10);
|
pid = parseInt(pid, 10);
|
||||||
|
|
||||||
tree[parentPid].push(pid);
|
tree[parentPid].push(pid);
|
||||||
|
|
||||||
tree[pid] = [];
|
tree[pid] = [];
|
||||||
pidsToProcess[pid] = 1;
|
pidsToProcess[pid] = 1;
|
||||||
|
|
||||||
buildProcessTree(pid, tree, pidsToProcess, spawnChildProcessesList, callback);
|
buildProcessTree(pid, tree, pidsToProcess, spawnChildProcessesList, callback);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user