У меня есть скрипт в виде строки, которую я хотел бы выполнить в дочернем процессе Node.js.Использовать child_process # spawn с общей строкой
Данные выглядит следующим образом:
const script = {
str: 'cd bar && fee fi fo fum',
interpreter: 'zsh'
};
Обычно, я мог бы использовать
const exec = [script.str,'|',script.interpreter].join(' ');
const cp = require('child_process');
cp.exec(exec, function(err,stdout,sterr){});
однако cp.exec
буферы стандартный вывод/STDERR, и я хотел бы иметь возможность быть в состоянии потока stdout/stderr в любом месте.
Кто-нибудь знает, есть ли способ использовать cp.spawn
в некотором роде с помощью строки generic
, таким же образом вы можете использовать cp.exec? Я хотел бы избежать записи строки во временный файл, а затем выполнить файл с помощью cp.spawn.
cp.spawn
будет работать со строкой, но только в том случае, если он имеет предсказуемый формат - это для библиотеки, поэтому он должен быть чрезвычайно общим.
... Я просто подумал о чем-то, я предполагаю, что лучший способ сделать это:
const n = cp.spawn(script.interpreter);
n.stdin.write(script.str); // <<< key part
n.stdout.setEncoding('utf8');
n.stdout.pipe(fs.createWriteStream('./wherever'));
Я постараюсь, что, но, может быть, у кого-то есть идея получше.
downvoter: вы бесполезны
OMG смешной downvote спасибо –