节点child_process execSync与xclip挂起

时间:2018-09-04 15:27:43

标签: node.js child-process xclip

我正在尝试使用child_process执行xclip -selection c,但是它似乎挂起或明显延迟了执行。

我尝试使用execSync

require('child_process').execSync('echo hi | xclip -selection c') && console.log('done');

我也尝试使用exec

require('child_process').exec('echo hi | xclip -selection c', (a) => console.log('done', a)) && undefined;

在两种情况下,在按下enter到打印done之间都有明显的延迟。但是,剪贴板实际上几乎立即受到影响,似乎node似乎并没有意识到命令已完成。

还要注意,执行之间的延迟似乎有所不同。另外,exec变体的延迟时间似乎比execSync变体的延迟时间短,有时似乎无限期地挂起。

1 个答案:

答案 0 :(得分:1)

很抱歉回答我自己的问题,但是在发布问题后不久,我偶然发现了答案。

显然,xclip默认情况下在被调用时不会终止,但是会继续监听更多输入。要指示xclip仅期望输入1,需要使用-l参数,例如:

require('child_process').execSync('echo hi | xclip -selection c -l') && console.log('done');

来源:https://github.com/astrand/xclip/issues/45