35 lines
738 B
JavaScript
35 lines
738 B
JavaScript
const spawn = require('child_process').spawn;
|
|
|
|
module.exports = function(rootPid, callback) {
|
|
const tree = {};
|
|
var output = '';
|
|
|
|
// *nix
|
|
const ps = spawn('ps', ['-A', '-o', 'ppid,pid']);
|
|
ps.stdout.on('data', data => {
|
|
output += data.toString('ascii');
|
|
});
|
|
|
|
ps.on('close', () => {
|
|
try {
|
|
const res = output
|
|
.split('\n')
|
|
.slice(1)
|
|
.map(_ => _.trim())
|
|
.reduce((acc, line) => {
|
|
if (line.indexOf(rootPid + ' ') === 0) {
|
|
const pid = line.split(/\s+/).pop();
|
|
acc.push(parseInt(pid, 10));
|
|
rootPid = pid;
|
|
}
|
|
|
|
return acc;
|
|
}, []);
|
|
|
|
callback(null, res);
|
|
} catch (e) {
|
|
callback(e, null);
|
|
}
|
|
});
|
|
};
|