Child Process Flashcards
child_process.exec(command[, options][, callback])
Порождает оболочку и выполняет команду внутри этой оболочки, передавая stdout и stderr в функцию обратного вызова после завершения. Возвращает экземпляр ChildProcess.
child_process.execFile()
аналогичен child_process.exec(), за исключением того, что он порождает команду напрямую, без предварительного порождения оболочки по умолчанию. Возвращает экземпляр ChildProcess.
child_process.fork()
Порождает новый процесс Node.js и вызывает указанный модуль с установленным каналом связи IPC, который позволяет отправлять сообщения между родительским и дочерним процессами. Возвращает экземпляр ChildProcess.
child_process.spawn()
Порождает дочерний процесс асинхронно, не блокируя цикл событий Node.js. Возвращает экземпляр ChildProcess.
Событие: ‘close’
Событие ‘close’ испускается после завершения процесса и закрытия потоков stdio дочернего процесса. Оно отличается от события ‘exit’, поскольку несколько процессов могут использовать одни и те же потоки stdio. Событие ‘close’ всегда будет происходить после того, как уже произошло событие ‘exit’, или ‘error’
Событие: disconnect¶
Событие disconnect возникает после вызова метода subprocess.disconnect() в родительском процессе или process.disconnect() в дочернем процессе. После отключения невозможно отправлять или получать сообщения, а свойство subprocess.connected равно false.
Событие: error¶
Событие ‘error’ генерируется всякий раз, когда:
Процесс не может быть порожден.
Процесс не может быть завершен.
Отправка сообщения дочернему процессу не удалась.
Дочерний процесс был прерван через опцию signal.
Событие ‘exit’ может сработать или не сработать после возникновения ошибки. При прослушивании событий ‘exit’ и ‘error’ предохраняйтесь от случайного многократного вызова функций-обработчиков.
Событие: message¶
Событие ‘message’ срабатывает, когда дочерний процесс использует process.send() для отправки сообщений. Сообщение проходит через сериализацию и разбор. Полученное сообщение может отличаться от первоначально отправленного.
Событие: spawn¶
Событие ‘spawn’ происходит после успешного порождения дочернего процесса. Если дочерний процесс не был успешно порожден, событие ‘spawn’ не испускается, а вместо него испускается событие ‘error’
Событие: exit¶
Событие ‘exit’ выдается после завершения дочернего процесса. Если процесс завершился, то code - это код завершения процесса, иначе null. Если процесс завершился из-за получения сигнала, то signal - строковое имя сигнала, иначе null. Одно из этих двух значений всегда будет не null.
Когда срабатывает событие `‘exit’’, потоки stdio дочерних процессов могут быть все еще открыты.
subprocess.disconnect()
Закрывает IPC-канал между родительским и дочерним процессами, позволяя дочернему процессу изящно завершить работу, когда не останется других соединений, поддерживающих его жизнь. После вызова этого метода свойства subprocess.connected и process.connected в родительском и дочернем процессах (соответственно) будут установлены в false, и передача сообщений между процессами будет невозможна.
subprocess.kill([signal])
signal {number|string}
Возвращает: {boolean}
Метод subprocess.kill() посылает сигнал дочернему процессу. Если аргумент не указан, процессу будет послан сигнал ‘SIGTERM’. Эта функция возвращает true, если kill(2) завершился успешно, и false в противном случае.
subprocess.send(message[, sendHandle[, options]][, callback])
Возвращает: {boolean}
Когда между родительским и дочерним процессами установлен IPC-канал (т.е. при использовании child_process.fork()), метод subprocess.send() может быть использован для отправки сообщений дочернему процессу. Когда дочерний процесс является экземпляром Node.js, эти сообщения могут быть получены через событие ‘message’.