diff --git a/internal/db/agent_process_stub.go b/internal/db/agent_process_stub.go new file mode 100644 index 0000000..0b0e3b2 --- /dev/null +++ b/internal/db/agent_process_stub.go @@ -0,0 +1,9 @@ +//go:build !windows + +package db + +import "os/exec" + +func configureAgentProcess(cmd *exec.Cmd) { + _ = cmd +} diff --git a/internal/db/agent_process_windows.go b/internal/db/agent_process_windows.go new file mode 100644 index 0000000..c268037 --- /dev/null +++ b/internal/db/agent_process_windows.go @@ -0,0 +1,20 @@ +//go:build windows + +package db + +import ( + "os/exec" + "syscall" +) + +const windowsCreateNoWindow = 0x08000000 + +func configureAgentProcess(cmd *exec.Cmd) { + if cmd == nil { + return + } + cmd.SysProcAttr = &syscall.SysProcAttr{ + HideWindow: true, + CreationFlags: windowsCreateNoWindow, + } +} diff --git a/internal/db/mysql_agent_impl.go b/internal/db/mysql_agent_impl.go index c5b53f6..b3ffe19 100644 --- a/internal/db/mysql_agent_impl.go +++ b/internal/db/mysql_agent_impl.go @@ -72,6 +72,7 @@ func newMySQLAgentClient(executablePath string) (*mysqlAgentClient, error) { } cmd := exec.Command(pathText) + configureAgentProcess(cmd) stdin, err := cmd.StdinPipe() if err != nil { return nil, fmt.Errorf("创建 MySQL 驱动代理 stdin 失败:%w", err) diff --git a/internal/db/optional_driver_agent_impl.go b/internal/db/optional_driver_agent_impl.go index 18f88ce..c61bd70 100644 --- a/internal/db/optional_driver_agent_impl.go +++ b/internal/db/optional_driver_agent_impl.go @@ -73,6 +73,7 @@ func newOptionalDriverAgentClient(driverType string, executablePath string) (*op } cmd := exec.Command(pathText) + configureAgentProcess(cmd) stdin, err := cmd.StdinPipe() if err != nil { return nil, fmt.Errorf("创建 %s 驱动代理 stdin 失败:%w", driverDisplayName(driverType), err)