Node.jsで外部プロセスを起動する方法

Node.jsで外部プロセスを起動するためには、child_processモジュールを使用します。以下にそのサンプルコードを示します。

const { exec } = require('child_process');

exec('your command here', (error, stdout, stderr) => {
  if (error) {
    console.error(`exec error: ${error}`);
    return;
  }
  console.log(`stdout: ${stdout}`);
  console.error(`stderr: ${stderr}`);
});

このコードは、your command hereに指定したコマンドを実行します。コマンドの実行結果はstdoutに、エラーメッセージはstderrに格納されます。エラーが発生した場合、エラーオブジェクトはerrorに格納されます。

このコードを自分のニーズに合わせて調整してください。例えば、'your command here'を実際に実行したいコマンド(例:'ls -l')に置き換えてみてください。ただし、このコードを実行する前に、実行したいコマンドがシステムに影響を与えないことを確認してください。安全なコマンドのみを実行してください。

ソース: Bing との会話 2023/11/28 (1) github.com. https://github.com/cciixx/nba-prediction-sys/tree/41d4ee1a9a010d29c9db149af3b6044add6a8dc8/.history%2Froutes%2Fpredict_20200323172137.js. (2) github.com. https://github.com/MathuraMG/PaperCraneLab/tree/3fb87ed1757678ffd3c1689d82768c00295c9052/env-12.10.0%2Fsrc%2Fnode-v12.10.0%2Fdoc%2Fapi%2Fchild_process.md.

起動するプログラムをシェル上ではなく単独で実行するには、どのようにすれば良いですか?

Node.jsのchild_processモジュールには、execの他にspawnというメソッドもあります。spawnは新しいシェルを起動せずに直接コマンドを実行します。以下にそのサンプルコードを示します。

const { spawn } = require('child_process');
const command = spawn('your command here', ['arg1', 'arg2', ...]);

command.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

command.stderr.on('data', (data) => {
  console.error(`stderr: ${data}`);
});

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

このコードは、your command hereに指定したコマンドを実行し、'arg1', 'arg2', ...といった引数を渡します。コマンドの実行結果はstdoutに、エラーメッセージはstderrに格納されます。プロセスが終了したときの終了コードはcloseイベントのcodeパラメータに格納されます。

このコードを自分のニーズに合わせて調整してください。例えば、'your command here'を実際に実行したいコマンド(例:'ls')に、['arg1', 'arg2', ...]をそのコマンドの引数(例:['-l'])に置き換えてみてください。ただし、このコードを実行する前に、実行したいコマンドがシステムに影響を与えないことを確認してください。安全なコマンドのみを実行してください。

ソース: Bing との会話 2023/11/28 (1) github.com. https://github.com/positive12/nodeRsync/tree/7d622175037f4ca9e54c70f1dfafaa75b8634e7f/rsync.js. (2) github.com. https://github.com/Legend-Wangyunfeng/ByteDance_YouthCamp/tree/d43762d499fedb9f313c685b28af4a23dd4de0fe/Day01%2Fcli%2Fbin%2Fscript%2Finit.js. (3) github.com. https://github.com/royalcala/vidalii-server/tree/8eb2fe7fb76319bba8d93015e139394b7ebbdf15/packages%2Fold_versions%2Fdb%2Fshell.js. (4) github.com. https://github.com/gauravsharmadev/github-webhooks/tree/a732c2ed2181e21a38da710b26021612a03da92a/scripts%2Fecosystem%2Fpm2%2Fupdate-pid.js.