node.js spawnSync最后一行stdin未被

时间:2018-02-13 00:56:27

标签: node.js io

在shell中运行它。

node -e "console.log(require('child_process').spawnSync('column', ['-t','-s',','], {input: 'a,b\nc,d', encoding:'utf8'}).stdout)"

我在不同的环境中看到不同的行为。

  • 6.5.0:打印一行(仅a b\n
  • 4.2.6:打印两行(a b\nc d\n

我确实看到在显示出最后一行被删除的意外行为的环境中,在提供的spawnSync输入上附加换行符将解决问题。因此,在将来做这样的事情时,我将确保输入以换行符终止以保持安全。

然而,如果我没有添加换行符来刷新流,那么我不确定我是不是因为期望节点不是输掉我的最后一行输出(这是我期待这个问题根植于什么)。所以这看起来像个bug。

我尝试运行runkit.com上提供的不同版本的节点,但是它们以某种方式返回意外的一行输出(除了0.10.x,它总共缺少spawnSync API)。现在,我正在挠头。

1 个答案:

答案 0 :(得分:0)

发现这个问题是column的行为。

它要求您提供最后一行的换行符。