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

如何让Go启动的子进程在自身目录下生成指定文件?

子进程工作目录配置问题解决

问题场景

用Go编写的父进程通过以下代码启动外部exe:

command := exec.Command("C:\\myapplication.exe")
if err := command.Run(); err != nil {
}

而外部程序myapplication.exe里包含这段代码:

os.Create("generatedfile.txt")

当前的问题是,generatedfile.txt会被创建在父进程的运行目录下,而非子进程exe所在的C:\目录。要求不修改子进程中os.Create的参数,仅调整父进程的启动配置来解决问题。

解决方案

核心是给子进程指定启动后的工作目录,通过设置exec.Cmd的Dir字段即可实现。

修改后的父进程代码如下:

command := exec.Command("C:\\myapplication.exe")
// 将子进程的工作目录设置为其自身所在的C:\目录
command.Dir = "C:\\"
if err := command.Run(); err != nil {
    // 可根据需求添加错误处理逻辑,比如打印错误信息
    log.Printf("启动子进程出错: %v", err)
}

原理说明

exec.Cmd的Dir字段用于定义子进程启动时的当前工作目录。如果不手动设置,子进程会默认继承父进程的工作目录。当我们把Dir设为C:\后,子进程启动后就会以C:\作为当前工作目录,此时子进程里的os.Create("generatedfile.txt")会基于这个目录创建文件,最终生成在C:\generatedfile.txt路径下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:42:02