Das Node.js-Modul child_process ermöglicht das Starten von Child-Prozessen und deren Interaktion mit dem Elternprozess.
Hier sind einige grundlegende Methoden:
1. `exec()`: Sie wird verwendet, um einen Befehl in einem Shell auszuführen und einen Buffer mit dem Hauptprozess zu teilen. Wenn der auszuführende Befehl große Datenmengen erzeugt, kann dies zu Problemen führen, da die Daten zwischengespeichert werden müssen.
2. `spawn()`: Mit spawn() können Sie einen neuen Prozess mit bestimmten Kommandos und Argumenten starten. Es bietet mehr Kontrolle und pipelining, kann jedoch schwieriger zu verwenden sein.
Hier finden Sie eine einfache Nutzung von `exec()` und `spawn()`:
```js
const { exec, spawn } = require(‘child_process’);
// Verwenden Sie `exec()`
exec(‘ls -lh’, (error, stdout, stderr) => {
if (error) {
console.error(`exec-Fehler: ${error}`);
return;
}
// Verwenden von `spawn()`
let child = spawn(‘ls’, [‘-lh’]);
child.stdout.on(‘data’, (data) => {
console.log(`stdout: ${data}`);
});
child.stderr.on(‘data’, (data) => {
console.error(`stderr: ${data}`);
});
child.on(‘exit’, (exitCode) => {
console.log(`Child process exited with code ${exitCode}`);
});
```
Beachten Sie bitte, dass bei der Verwendung von `spawn()` die üblichen Shell-Zwischenschritte nicht durchgeführt werden, daher müssen manche Dinge manuell erledigt werden.
3. `fork()`: Eine Variante des Spawn zum Starten von Node-Prozessen. Das erstellte Child ist ein separater Prozess des Elternprozesses, aber es kann ohne Shell gestartet werden und Nachrichten können ohne Verwendung von Streams zwischen ihnen hin und her gesendet werden.
```js
const { fork } = require(‘child_process’);
const child = fork(`${__dirname}/child.js`);
child.on(‘message’, (message) => {
console.log(`Parent received message: ${message}`);
});
child.send(‘Hello, child!’);
```
Child.js könnte folgendermaßen aussehen:
```js
process.on(‘message’, (message) => {
console.log(`Child received message: ${message}`);
});
process.send(‘Hello, parent!’);
```