58ca4e68db
- Go backend API with full CRUD for all modules (CRM, Sales, Finance, HR, Legal, Marketing, Support, Purchase, Inventory, Projects, Automation, Analytics) - Rust analytics service with parallel report generation - C runtime with POSIX shared memory IPC - PostgreSQL schema with 30+ tables, full migrations - Redis cache, sessions, pub/sub - Kafka event streaming with Zookeeper - WebSocket hub for real-time updates - Automation engine with cron jobs, workflows, event triggers - JWT authentication, multi-tenant from start - Docker Compose with all services - Nginx reverse proxy with rate limiting - Integration tests passing - Feature gap analysis against Fortnox/Odoo/Visma Refs: BOC-001
38 lines
800 B
JavaScript
38 lines
800 B
JavaScript
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;
|