mirror of https://github.com/lukechilds/node.git
Browse Source
This commit prevents child process stdio streams from being automatically flushed on child process exit/close if a 'readable' event handler has been attached at the time of exit. Without this, child process stdio data can be lost if the process exits quickly and a `read()` (e.g. from a 'readable' handler) hasn't had the chance to get called yet. Fixes: https://github.com/nodejs/node/issues/5034 PR-URL: https://github.com/nodejs/node/pull/5037 Reviewed-By: James M Snell <jasnell@gmail.com>v0.12-staging
committed by
Myles Borins
2 changed files with 22 additions and 2 deletions
@ -0,0 +1,17 @@ |
|||||
|
'use strict'; |
||||
|
var cp = require('child_process'); |
||||
|
var common = require('../common'); |
||||
|
var assert = require('assert'); |
||||
|
|
||||
|
var buffer = []; |
||||
|
var p = cp.spawn('echo', ['123']); |
||||
|
p.on('close', common.mustCall(function(code, signal) { |
||||
|
assert.strictEqual(code, 0); |
||||
|
assert.strictEqual(signal, null); |
||||
|
assert.strictEqual(Buffer.concat(buffer).toString().trim(), '123'); |
||||
|
})); |
||||
|
p.stdout.on('readable', function() { |
||||
|
var buf; |
||||
|
while (buf = this.read()) |
||||
|
buffer.push(buf); |
||||
|
}); |
Loading…
Reference in new issue