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.
		
		
		
		
		
			
		
			
				
					
					
						
							38 lines
						
					
					
						
							800 B
						
					
					
				
			
		
		
	
	
							38 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;
 |