var child_process = require('child_process');
// spawn() является универсальным методом. exec(), execFile(), fork() наследуют от него.
// {shell: true} - говорит о том, стоит ли выполнять команду терминале командной строки или файл можно запустить самостоятельно вне терминала.
var childProcess = child_process.spawn('dir', ['/b', '/o:-n'], {shell: true}); // Поключается к stdin, stdout, stderr созданного дочернего процесса и получает данные от него.
childProcess.stdout.on('data', function (data) {
console.log('STDOUT from child process: ' + data);
});
childProcess.stderr.on('data', function (data) {
console.log('STDERR from child process: ' + data);
});
childProcess.on('error', function (error) {
console.log('Child process error.');
console.log(error);
});
childProcess.on('close', function (code, signal) {
console.log('Child process exited with code ' + code + ' and signal ' + signal);
});
/*
childProcess.ref();
childProcess.unref();
*/
parent-process-exec.js
var child_process = require('child_process');
// exec() открывет терминал командной строки и выполняет в нем переданную команду.
var childProcess = child_process.exec('dir /b /o:-n'); // Поключается к stdin, stdout, stderr созданного дочернего процесса и получает данные от него.
childProcess.stdout.on('data', function (data) {
console.log('STDOUT from child process: ' + data);
});
childProcess.stderr.on('data', function (data) {
console.log('STDERR from child process: ' + data);
});
childProcess.on('error', function (error) {
console.log('Child process error.');
console.log(error);
});
childProcess.on('close', function (code, signal) {
console.log('Child process exited with code ' + code + ' and signal ' + signal);
});
/*
childProcess.ref();
childProcess.unref();
*/
parent-process-execFile.js
var child_process = require('child_process');
// execFile() полностью аналогичен exec() - открывет терминал командной строки и выполняет в нем переданную команду, но в отлчии от exec() не показывает сам терминал на экране.
// В Windows файлы .bat и .cmd не могут работать вне терминала, поэтому execFile() не сможет их запустить.
var childProcess = child_process.execFile('node.exe', ['--version']); // Поключается к stdin, stdout, stderr созданного дочернего процесса и получает данные от него.
childProcess.stdout.on('data', function (data) {
console.log('STDOUT from child process: ' + data);
});
childProcess.stderr.on('data', function (data) {
console.log('STDERR from child process: ' + data);
});
childProcess.on('error', function (error) {
console.log('Child process error.');
console.log(error);
});
childProcess.on('close', function (code, signal) {
console.log('Child process exited with code ' + code + ' and signal ' + signal);
});
/*
childProcess.ref();
childProcess.unref();
*/
parent-process-fork.js
var child_process = require('child_process');
// fork() - запускает файл JavaScript-файл, находящийся по переданному адресу в отдельно мпроцессе Node.js и соединяет его с родительским процессом, который его создал, для обеспечения возможности обмена данными между ними с помощью сообщений.
var childProcess = child_process.fork('./child-process.js', ['name']);
childProcess.on('error', function (error) {
console.log('Child process error.');
console.log(error);
});
childProcess.on('close', function (code, signal) {
console.log('Child process exited with code ' + code + ' and signal ' + signal);
});
childProcess.on('disconnect', function () {
console.log('Child process disconneted.');
});
childProcess.on('message', function (message) {
console.log('Message from child process: ' + message.text);
});
if (childProcess.connected) {
childProcess.send({text: 'Parent process message.'});
}
/*
childProcess.ref();
childProcess.unref();
*/
child-process.js
process.on('message', function (message) {
console.log('Message from parent process: ' + message.text);
});
process.on('disconnect', function () {
console.log('Process disconneted.');
});
if (process.connected) {
process.send({text: 'Child process message.'});
setTimeout (function () {
process.disconnect();
}, 1000);
}
Комментариев нет:
Отправить комментарий