我想从子进程中获取进程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
});
答案 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}`);