2016-07-29 148 views
1

node.js中是否有任何方式來分叉一個新進程並運行多個終端shell命令並執行node.js函數(例如,來自同一進程/上下文的fs.writeFileSync)。從同一個node.js子進程運行多個命令

作爲一個例子,我想要做到以下幾點。在同一過程中執行以下所有操作。

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

這是一個express.js的applcation,而且由於多個用戶將在同一時間訪問同一個文件系統,並在同一回購執行的git行爲,我想通過生成每個新進程,以避免衝突一。

+0

你有沒有想過把所有這些命令放在一個腳本中? –

+0

@JuanStiza不知道我將如何運行writeFileSync。我想我會不得不把我的另一個js文件,並從另一個shell命令調用它? – Alex

回答

-1

把它分成一個叫做孩子的主要中心。這些孩子會預寫任何需要多線程的寫入/保存。

只要有父母電話exec("node myWritingChild.js");需要製作其中一個寫入線程時。

請注意:通過讓它通過管道打開/分叉來運行孩子通常會更好。有關於這個的many postings,所以如果你想查找它。還請查看這些docs

+0

謝謝你。這似乎部分工作。我將所有命令放在一個單獨的js文件中,並使用exec命令來運行它們,但它看起來像writeFileSync更改了master分支,而不是其他兩個命令創建的新分支。我期望,因爲命令'git worktree add ...'和'cd ../branch'與writeFileSync在相同的過程中做相反的事情。 – Alex

+0

@Alex嘗試從多個不同來源寫入相同的文件可能會導致問題。確保每位作者都有適當的許可,並且不會妨礙他們。或者,如果您仍然遇到問題,請讓所有子項中的一個寫入流程/子項管理隊列數據。 – Anselm

+0

這是現在的工作。問題在於'git worktree add -b'創建了一條新路徑,而且我意外地寫入了舊路徑。通過將所有內容放入新的js文件並運行exec似乎按預期工作。 – Alex