2016-07-29 63 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