我想检查stdin中是否有任何数据以及是否还没有继续前进。当我写这段代码时
process.stdin.on 'data', (d) ->
console.log 'data ' + d.length + " " + d
process.stdin.on 'end', () ->
console.log 'end'
它阻止并允许我输入我的控制台。我不想要那个。我真的只想知道数据是否通过管道传输(例如echo 'data' |
),如果没有,则忽略stdin。如何检查stdin中是否有数据没有阻塞?
答案 0 :(得分:0)
不幸的是,在节点中看起来没有好办法。如果根本没有输入流,节点将等待来自终端的输入,这不是我们想要的情况。但是,end
可用于触发#!/usr/bin/env bash
if [ -t 0 ]; then
exec ./index.js < /dev/null
else
exec ./index.js
fi
事件,而不传入任何数据。
我一直在使用的解决方法是使用一个shell脚本来执行我的节点脚本,如下所示:
end
这是有效的,因为当/dev/null
用作标准输入时,节点将发送/dev/null
事件。此脚本检查是否存在stdin流,然后发送NavigationView navigation_view = (NavigationView) findViewById(R.id.navigation_view);
navigation_view.setItemTextColor(ColorStateList.valueOf(Color.BLACK));
navigation_view.setItemIconTintList(null);
或原始流。