subprocess输出有时被认为来自父进程?

我有一些Node.js脚本与我的应用程序一起加载。 我想保持这些工作尽可能模块化,所以这就是为什么我使用subprocess。 这里是加载我的工作文件的代码:

var job_files = glob.sync('**/*.js', {cwd: __dirname+'/jobs'}); var child_processes = []; async.each(job_files, function(job_file, cb) { var i = job_files.indexOf(job_file); child_processes[i] = exec('node '+__dirname+'/jobs/'+job_file); child_processes[i].stdout.on('data', function(data) { // Regex to eliminate extra new lines console.log('[w%s] %s', i, data.replace(/^\s+|\s+$/g, "")); }); child_processes[i].stderr.on('data', function(data) { console.log('[w%s] %s', i, data.replace(/^\s+|\s+$/g, "")); }); child_processes[i].on('close', function(code) { console.log('[w%s] Exit code: %s', i, code); }); }, function(err) { console.log('Jobs loaded!'); }); 

正如你所看到的,在每个控制台输出来自我的subprocess之前,我会添加一个小标签,以便我可以识别哪个作业会输出哪个消息。

它大部分时间都工作的很好,但是有时(在我看来,一个源于subprocess的消息在它之前不会有标签),就好像它已经被父进程输出一样。

我处理我的subprocess(或我的标记)有什么问题吗?