You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Deno应用外启动独立运行的终端进程?

在Deno中启动独立于主进程的子脚本

要让你的批处理脚本完全脱离Deno主进程,不会随主应用终止而停止,需要借助Windows系统的命令行工具创建独立进程,以下是两种可行方案:

方案一:使用cmd /c start命令

修改代码如下:

export const start_app = () => {
  Deno.run({
    cmd: ["cmd", "/c", "start", "", "./main.bat"],
    stdin: "null",
    stdout: "null",
    stderr: "null",
  });
};
  • cmd /c start 是Windows下创建独立进程的标准方式,start命令会为批处理脚本开启新的控制台会话,彻底脱离Deno主进程的控制。
  • 空字符串作为start的第二个参数是为了避免将bat路径误判为窗口标题,若不需要显示控制台窗口,可添加/b参数(即start /b "" ./main.bat)。
  • 设置stdin、stdout、stderr为"null",切断子进程与Deno主进程的IO关联,进一步确保独立性。

方案二:使用PowerShell的Start-Process

若更倾向PowerShell环境,可采用此方式:

export const start_app = () => {
  Deno.run({
    cmd: ["powershell", "-Command", "Start-Process", "-FilePath", "./main.bat"],
    stdin: "null",
    stdout: "null",
    stderr: "null",
  });
};
  • Start-Process会创建完全独立的进程,默认打开新窗口,添加-NoWindow参数可实现后台运行。

为什么之前的方法无效?

直接用Deno.run调用./main.bat时,子进程是Deno的直接子进程,Windows系统中父进程终止时会同步结束其所属会话内的子进程。而通过start或Start-Process创建的进程属于全新会话,与Deno主进程无关联,因此主进程退出后子进程仍能持续运行。

内容的提问来源于stack exchange,提问作者fudgemasterultra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:20:30