Thank you very much Ryan. It works for me. Also I'm sorry for lack of some
code. :)
On Sunday, May 25, 2014 8:09:18 PM UTC+8, ryandesign wrote:
>
> On May 25, 2014, at 1:00 AM, Liu Wei wrote:
>
> > Thanks ryandesign. this child_process is just for handling download csv
> files and then zip them. So the master process will do display csv files
> data and CRUD with Nosql.
>
> Is that in your code now? It wasn't in the code you showed us. Again, if
> there is nothing else for a node app to do, it will quit. If all the master
> is doing is waiting for a child process to exit, then when the child
> process exits, the master will also exit.
>
> Additionally, your code requests that the master process exit whenever the
> child process exits. It says so right here:
>
>
> fork.onUnexpectedExit = function (code, signal) {
> process.exit(1);
> };
> fork.on("exit", fork.onUnexpectedExit);
>
>
> You invent a new property on the child object called "onUnexpectedExit"
> and declare it as a function that exits the master when called. Then you
> ask node to call that function when the child emits the "exit" event. The
> "exit" event is emitted when the child exits, regardless of its code, so
> the property name "onUnexpectedExit" that you've chosen is misleading; the
> only reference I found to a property of that name is in this blog, so I
> guess you copied it from there:
>
> https://www.exratione.com/2013/05/die-child-process-die/
>
> If you only want to exit on unusual conditions, you should first check
> that the code argument is nonzero.
>
>
> Here is a revised version that shows that the master stays running if you
> give it something else to do (like print a message once a second):
>
>
> /* master.js */
>
> var cp = require('child_process'),
> fork = cp.fork('./child.js');
> fork.send({ zip: '111' });
> fork.on('message', function (msg) {
> if (msg.status === 'done') {
> fork.kill('SIGTERM');
> }
> });
> fork.on('exit', function (code, signal) {
> if (code) {
> console.log('child exited unexpectedly with code', code);
> process.exit(1);
> } else {
> console.log('child exited normally');
> }
> });
>
> // Simulate other work happening in the master.
> var i = 0;
> setInterval(function () {
> console.log(++i % 2 ? 'tick' : 'tock');
> }, 1000);
>
>
> /* child.js */
>
> process.on('message', function (m) {
> if (m.zip === '111' ) {
> //Do something logic
> //Simulate task taking 2.5 seconds to complete
> setTimeout(function () {
> process.send({status: 'done'});
> }, 2500);
> }
> });
>
> process.on('uncaughtException', function (err) {
> console.log("child.js: " + err.message + "\n" + err.stack + "\n Stopping
> background timer");
> });
>
> // SIGTERM AND SIGINT will trigger the exit event.
> process.once('SIGTERM', function () {
> console.log('SIGTERM');
> process.exit(0);
> });
>
>
>
--
Job board: http://jobs.nodejs.org/
New group rules:
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules:
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
---
You received this message because you are subscribed to the Google Groups
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/nodejs/bc203c5a-7383-48df-b549-87745cb1a05d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.