Как передать длинную строку в / dev / stdin через child_process.spawn () в Node.js?

Я пытаюсь выполнить Inkscape, передавая данные черезstdin, Inkscape поддерживает это только через/dev/stdin, По сути, я пытаюсь сделать что-то вроде этого:

echo "<sgv>...</svg>" | inkscape -z -f /dev/stdin -A /dev/stdout

Я не хочу записывать SVG на диск.

Я пытался просто с помощьюstdin.write(), но это не работает (может быть из-за/dev/stdin):

var cmd = spawn("inkscape", ["-z", "-f", "/dev/stdin", "-A", "/dev/stdout"], {encoding: "buffer", stdio: ["pipe", stdoutPipe, "pipe"]});

cmd.stdin.write(svg);

Это работает, но я должен записать SVG на диск:

var cmd = spawn("inkscape", ["-z", "-f", "/dev/stdin", "-A", "/dev/stdout"], {encoding: "buffer", stdio: [fs.openSync('file.svg', "a"), stdoutPipe, "pipe"]});

Я пытался передать потокstdio, но я просто продолжаю получатьTypeError: Incorrect value for stdio stream: [object Object]

Есть идеи?

добавление

В примерах используется Inkscape, но мой вопрос относится к любой произвольной программе, использующей/dev/stdin.

Кстати, это будет работать для меня:

var exec = require('child_process').exec;
exec("echo \"<svg>...</svg>\" | inkscape -z -f /dev/stdin -A /dev/stdout | cat", function (error, stdout, stderr) {});

За исключением того, что мой SVG слишком длинный, поэтому он выдает ошибку:Error: spawn Unknown system errno 7

Ответы на вопрос(4)

Ваш ответ на вопрос