2016-07-29 10 views
1

node.jsに新しいプロセスをフォークし、複数のターミナルシェルコマンドを実行し、同じプロセス/コンテキストからfs.writeFileSyncなどのnode.js関数を実行する方法はありますか。同じnode.js子プロセスから複数のコマンドを実行する

例として、私は次のことをしたいと思います。以下のすべてを同じプロセスで実行します。

exec("git worktree add -b"....); 
exec("cd ../"); 
writeFileSync(...); 

これはexpress.js applcationで、複数のユーザーが同時に同じファイルシステムにアクセスし、同じレポにGitのアクションを実行することになるので、私はそれぞれの新しいプロセスを生成することにより、競合を回避したいです1。

+0

あなたはこれらのコマンドをすべて1つのスクリプトに入れることを考えましたか? –

+0

@JuanStizaどのようにwriteFileSyncを実行するかわかりません。私は別のjsファイルを別のシェルコマンドから呼び出さなければならないと思いますか? – Alex

答えて

-1

子を呼び出すメインハブに分けてください。これらの子どもたちは、あなたがマルチスレッド化する必要がある書き込み/保存を実行します。

これらの書き込みスレッドの1つを作成する必要がある場合は、親コールexec("node myWritingChild.js");を持ってください。

注意:通常、子供がパイプを通って開き、フォークするのが良いです。これについてはmany postingsがありますので、探してみてください。また、docsもチェックしてください。

+0

ありがとう。これは部分的に機能しているようです。私はすべてのコマンドを別のjsファイルに置き、実行するためにexecコマンドを使用しましたが、writeFileSyncはmasterブランチを変更し、2つの他のコマンドで作成された新しいブランチではありません。私はコマンド 'git worktree add ...'と 'cd ../branch'がwritefileSyncと同じプロセスで反対の作業をするので、期待しています。 – Alex

+0

@Alex複数の異なるソースから同じファイルに書き込もうとすると、問題が発生する可能性があります。各ライターが適切な権限を持っていることを確認して、途中で取得していないことを確認します。または、問題が引き続き発生する場合は、すべての子パイプキューのデータを1つの書き込みプロセス/子プロセスに持ちます。 – Anselm

+0

これは現在動作しています。問題は 'git worktree add -b'が新しいパスを作成し、私が誤って古いパスに書き込んでいたことでした。新しいjsファイルにすべてを入れてexecを実行すると、期待どおりに動作しているようです。 – Alex

関連する問題