child_process.spawn stdin管道深度?

时间:2015-11-02 18:28:24

标签: node.js pipe spawn

以下程序产生一个sleep进程等待一个小时,然后在后台使用sleep,程序循环将一个字符串写入外部sleep进程。

我很清楚sleep根本没有阅读任何内容,只是为了演示目的而选择它。 (A)

我的程序循环279次然后暂停。预计会停止,但我无法弄清楚在精确的279次循环之后会发生什么,就像缓冲区已满。

  • 该缓冲区定义在哪里?
  • 我可以把它变小吗?
  • 我可以以某种方式询问spawn对象在写入队列中等待了多少未完成的数据?

如果我将"0123456789"更改为单个"X",它仍然会循环279次,所以它不仅仅是一个unix管道被填满。第一个例子设法写入2790个字节,第二个例子在十分之一后停止。

var child_process = require('child_process')

var p = child_process.spawn('/bin/sleep', ['3600']);

var cnt = 0;
function do_tick() {
  cnt++;
  console.log(cnt);
  p.stdin.write("0123456789", null, function(){
    setTimeout(do_tick, 1);
  });
}
do_tick();

琐碎:LinuxMint 17.2 x86_64,node.js v0.10.25

  

(A)我的现实世界问题是将PCM音频传送到现场   以适当的速度流动,并且走得太远,更加复杂。

0 个答案:

没有答案