mirror of https://gitee.com/openkylin/nodejs.git
40 lines
952 B
JavaScript
40 lines
952 B
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
const cp = require('child_process');
|
|
const NUM_MESSAGES = 10;
|
|
const values = [];
|
|
|
|
for (let i = 0; i < NUM_MESSAGES; ++i) {
|
|
values[i] = i;
|
|
}
|
|
|
|
if (process.argv[2] === 'child') {
|
|
const received = values.map(() => { return false; });
|
|
|
|
process.on('uncaughtException', common.mustCall((err) => {
|
|
received[err] = true;
|
|
const done = received.every((element) => { return element === true; });
|
|
|
|
if (done)
|
|
process.disconnect();
|
|
}, NUM_MESSAGES));
|
|
|
|
process.on('message', (msg) => {
|
|
// If messages are handled synchronously, throwing should break the IPC
|
|
// message processing.
|
|
throw msg;
|
|
});
|
|
|
|
process.send('ready');
|
|
} else {
|
|
const child = cp.fork(__filename, ['child']);
|
|
|
|
child.on('message', common.mustCall((msg) => {
|
|
assert.strictEqual(msg, 'ready');
|
|
values.forEach((value) => {
|
|
child.send(value);
|
|
});
|
|
}));
|
|
}
|