Skip to content

Instantly share code, notes, and snippets.

@isaacs
Created February 9, 2017 07:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save isaacs/05bece5f8cdd21ea3a38e62c09f2f694 to your computer and use it in GitHub Desktop.
Save isaacs/05bece5f8cdd21ea3a38e62c09f2f694 to your computer and use it in GitHub Desktop.
var sw = require('spawn-wrap')
var argv = process.argv.slice(1).map(function (arg) {
if (arg === __filename)
arg = 'double-wrap.js'
return arg
})
var node = process.execPath
var fg = require('foreground-child')
/*
main adds sw([first]), spawns 'parent'
first outputs some junk, calls runMain
parent adds sw([second]), spawns 'child'
second outputs some junk, calls runMain
child outputs some junk
*/
switch (process.argv[2]) {
case 'main':
console.error('main', process.pid, process.execArgv.concat(argv))
sw([__filename, 'first'])
fg(node, [__filename, 'parent'])
break
case 'first':
console.error('first', process.pid, process.execArgv.concat(argv))
sw.runMain()
break
case 'parent':
console.error('parent', process.pid, process.execArgv.concat(argv))
sw([__filename, 'second'])
fg(node, [__filename, 'child'])
break
case 'second':
console.error('second', process.pid, process.execArgv.concat(argv))
sw.runMain()
break
case 'child':
console.error('child', process.pid, process.execArgv.concat(argv))
break
default:
console.error('expect:', [
'start',
'main',
'first',
'parent',
'first',
'second',
'child'
])
console.error('start!', process.pid, process.execArgv.concat(argv))
fg(node, [__filename, 'main'])
break
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment