узел child_process execSync зависает с xclip - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь использовать 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 голосов
/ 04 сентября 2018

Извиняюсь за ответ на свой вопрос, но я наткнулся на ответ вскоре после публикации вопроса.

Очевидно, xclip, по умолчанию, не завершается при вызове, но продолжает слушать для большего ввода. Для указания xclip ожидать только 1 ввода требуется аргумент -l, например ::

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

источник: https://github.com/astrand/xclip/issues/45

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...