diff options
author | Ari Leo Frankel <ari.l.frankel@gmail.com> | 2018-03-01 13:56:03 -0600 |
---|---|---|
committer | Beth Griggs <Bethany.Griggs@uk.ibm.com> | 2018-12-03 21:08:12 +0000 |
commit | 06491482f83af0adf74013345e2cd5fc09b4633a (patch) | |
tree | e841d5c7e441912eb5591de42ad6068dd3f47bc3 /doc | |
parent | 18c4e5e8865fa49c6c19f45723d2b2a088f6e826 (diff) | |
download | node-new-06491482f83af0adf74013345e2cd5fc09b4633a.tar.gz |
doc: update child_process.md
Add an explanation of the risk of exceeding platform pipe
capacity with uncaptured output in child_process.spawn
with stdio of pipe
PR-URL: https://github.com/nodejs/node/pull/19075
Fixes: https://github.com/nodejs/node/issues/4236
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'doc')
-rwxr-xr-x | doc/api/child_process.md | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/doc/api/child_process.md b/doc/api/child_process.md index 6f5b320f43..cf0ba5a75b 100755 --- a/doc/api/child_process.md +++ b/doc/api/child_process.md @@ -26,10 +26,16 @@ ls.on('close', (code) => { ``` By default, pipes for `stdin`, `stdout`, and `stderr` are established between -the parent Node.js process and the spawned child. It is possible to stream data -through these pipes in a non-blocking way. *Note, however, that some programs -use line-buffered I/O internally. While that does not affect Node.js, it can -mean that data sent to the child process may not be immediately consumed.* +the parent Node.js process and the spawned child. These pipes have +limited (and platform-specific) capacity. If the child process writes to +stdout in excess of that limit without the output being captured, the child +process will block waiting for the pipe buffer to accept more data. This is +identical to the behavior of pipes in the shell. Use the `{ stdio: 'ignore' }` +option if the output will not be consumed. +It is possible to stream data through these pipes in a non-blocking way. Note, +however, that some programs use line-buffered I/O internally. While that does +not affect Node.js, it can mean that data sent to the child process may not be +immediately consumed. The [`child_process.spawn()`][] method spawns the child process asynchronously, without blocking the Node.js event loop. The [`child_process.spawnSync()`][] |