You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
800 B
37 lines
800 B
const exec = require('child_process').exec; |
|
const tree = require('./tree'); |
|
const utils = require('./utils'); |
|
var hasPS = true; |
|
|
|
// discover if the OS has `ps`, and therefore can use psTree |
|
exec('ps', (error) => { |
|
module.exports.hasPS = hasPS = !error; |
|
}); |
|
|
|
module.exports = function main(pid, callback) { |
|
if (typeof pid === 'number') { |
|
pid = pid.toString(); |
|
} |
|
|
|
if (hasPS && !process.env.NO_PS) { |
|
return tree(pid, callback); |
|
} |
|
|
|
utils |
|
.getStat() |
|
.then(utils.tree) |
|
.then((tree) => utils.pidsForTree(tree, pid)) |
|
.then((res) => |
|
callback( |
|
null, |
|
res.map((p) => p.PID) |
|
) |
|
) |
|
.catch((error) => callback(error)); |
|
}; |
|
|
|
if (!module.parent) { |
|
module.exports(process.argv[2], (e, pids) => console.log(pids)); |
|
} |
|
|
|
module.exports.hasPS = hasPS;
|
|
|