Electronを使っていて、Rendere, Mainとはさらに別のプロセスとデータのやり取りをすることがあったのでそのメモを兼ねて。 シナリオとしては、GUIからの入力をMain -> ChildとpipeしてそれをGUIに戻すという感じ。 シーケンス図はこんな感じ。 要は、Mainからforkしたchildのstdinに何かを書き込んでstdouをpipeしてもらえばいい。 child_process#spawn Node.jsには子processをforkする手段が2つある。 ひとつがchild_process.fork、もうひとつがchild_process.spawn。 この2つの違いは正直良くわからないのだが、forkはnode.jsスクリプトを子プロセスとしてspawnし、spawnはシェルコマンドをspawnするもののようだ。(詳しい話は公式ドキュメントを読んだほうがいい
![Electron (Node.js)で別プロセスとinteractiveなやりとりをする - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/9bf359339e70a3d0a0b918a834789c278d4a7e50/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9RWxlY3Ryb24lMjAlMjhOb2RlLmpzJTI5JUUzJTgxJUE3JUU1JTg4JUE1JUUzJTgzJTk3JUUzJTgzJUFEJUUzJTgyJUJCJUUzJTgyJUI5JUUzJTgxJUE4aW50ZXJhY3RpdmUlRTMlODElQUElRTMlODIlODQlRTMlODIlOEElRTMlODElQTglRTMlODIlOEElRTMlODIlOTIlRTMlODElOTklRTMlODIlOEImdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPTI0NjI1YmIwM2VjOGQxNzRjZmJmNjVmZmJlMzRlZDIy%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBrZXJveHAmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTAyY2VhOTQ4YzJkNTg5ZjI4ZmUyMTM2NDk4MDg5NDcz%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D7efeb464a00b5affa27d38d6420b3184)