ホームページ >ウェブフロントエンド >jsチュートリアル >Node.jsでコマンドラインバイナリを実行するにはどうすればよいですか?

Node.jsでコマンドラインバイナリを実行するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-27 06:46:09450ブラウズ

How to Execute Command Line Binaries in Node.js?

Node.js でのコマンド ライン バイナリの実行

サードパーティ バイナリの実行は、CLI ライブラリを他の言語から Node.js に移植するときに不可欠なタスクです。 Node.js でこれを実現するには、いくつかのモジュールが利用可能です:

child_process.exec

バッファリングされた出力の場合は、exec を使用します:

const { exec } = require('child_process');
exec('cat *.js bad_file | wc -l', (err, stdout, stderr) => {
  if (err) return; // Node couldn't execute the command

  console.log(`stdout: ${stdout}`);
  console.log(`stderr: ${stderr}`);
});

child_process.spawn

出力をストリームとして受信したい場合は、次を使用します。 spawn:

const { spawn } = require('child_process');
const child = spawn('ls', ['-lh', '/usr']);

// For text chunks, use `child.stdout.setEncoding('utf8');`
child.stdout.on('data', (chunk) => { /* data in chunks */ });

// Pipe the stream elsewhere
child.stderr.pipe(dest);

child.on('close', (code) => { console.log(`Exited with code ${code}`); });

同期オプション

Node.js は、exec 関数と spawn 関数に対応する同期機能も提供します:

const { execSync } = require('child_process');
let stdout = execSync('ls');

const { spawnSync} = require('child_process');
const child = spawnSync('ls', ['-lh', '/usr']);

console.log('error', child.error);
console.log('stdout ', child.stdout);
console.log('stderr ', child.stderr);

履歴サポート

ES5 より前のバージョンの Node.js では、次のメソッドが一般的でした。使用:

// Complete output as a buffer
var exec = require('child_process').exec;
exec('prince -v builds/pdf/book.html -o builds/pdf/book.pdf',
  function(error, stdout, stderr) { // command output in stdout });

// Handling large output chunks with streams
var spawn = require('child_process').spawn;
var child = spawn('prince', ['-v', 'builds/pdf/book.html', '-o', 'builds/pdf/book.pdf']);

// Output in chunks
child.stdout.on('data', (chunk) => { /* data in chunks */ });

// Piping output
child.stdout.pipe(dest);

以上がNode.jsでコマンドラインバイナリを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。