lix-website/themes/lix/assets/bootstrap/node_modules/pidtree/lib/wmic.js

50 lines
1.2 KiB
JavaScript
Raw Normal View History

2024-04-27 03:39:10 +00:00
'use strict';
var os = require('os');
var bin = require('./bin');
/**
* Gets the list of all the pids of the system through the wmic command.
* @param {Function} callback(err, list)
*/
function wmic(callback) {
var args = ['PROCESS', 'get', 'ParentProcessId,ProcessId'];
var options = {windowsHide: true, windowsVerbatimArguments: true};
bin('wmic', args, options, function(err, stdout, code) {
if (err) {
callback(err);
return;
}
if (code !== 0) {
callback(new Error('pidtree wmic command exited with code ' + code));
return;
}
// Example of stdout
//
// ParentProcessId ProcessId
// 0 777
try {
stdout = stdout.split(os.EOL);
var list = [];
for (var i = 1; i < stdout.length; i++) {
stdout[i] = stdout[i].trim();
if (!stdout[i]) continue;
stdout[i] = stdout[i].split(/\s+/);
stdout[i][0] = parseInt(stdout[i][0], 10); // PPID
stdout[i][1] = parseInt(stdout[i][1], 10); // PID
list.push(stdout[i]);
}
callback(null, list);
} catch (error) {
callback(error);
}
});
}
module.exports = wmic;