如何从Node JS中的子进程获取进程ID

时间:2019-11-04 10:54:07

标签: node.js

我想从子进程中获取进程ID,因为我正在使用此命令,这是我尝试过的let unittest_api_backend_process_id = child_process_obj.pid;,但它不起作用,在这里我添加了我的整个代码,任何人都可以检查一下我下面的代码可以帮助我解决此问题?任何帮助将不胜感激

const execSync = require('child_process').exec;
let child_process_obj = execSync('nodemon server.js ', {
    cwd: process.env.BACKEND_FOLDER_PATH
});

1 个答案:

答案 0 :(得分:2)

我认为您需要使用exec而不是execSync,这将返回一个包含PID的child_process对象。

execSync返回stdout,它不会给我们PID。另外,execSync直到进程退出后才返回,在这种情况下可能无法正常工作。

当进程终止时,传递给exec的回调将与输出一起调用。

我已更新为可以正确通过cwd。

const exec = require('child_process').exec;

let child_process_obj = exec('nodemon server.js ', {
    cwd: process.env.BACKEND_FOLDER_PATH
}, (error, stdout, stderr) => {
    // Callback will be called when process exits..
    if (error) {
        console.error(`An error occurred: `, error);
    } else {
        console.log(`stdout:`, stdout);
        console.log(`stderr:`, stderr);
    }
});

console.log(`Launched child process: PID: ${child_process_obj.pid}`);