summaryrefslogtreecommitdiffstats
path: root/node_modules/pidtree/lib/wmic.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/pidtree/lib/wmic.js')
-rw-r--r--node_modules/pidtree/lib/wmic.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/node_modules/pidtree/lib/wmic.js b/node_modules/pidtree/lib/wmic.js
new file mode 100644
index 0000000..0361728
--- /dev/null
+++ b/node_modules/pidtree/lib/wmic.js
@@ -0,0 +1,49 @@
+'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;