From 638013a93d06f5bbba3ab7bbf2e145f439067e0f Mon Sep 17 00:00:00 2001 From: m1m1sha <56671041+m1m1sha@users.noreply.github.com> Date: Sun, 5 May 2024 15:33:05 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=88=20perf:=20hidden=20cmd=20windows?= =?UTF-8?q?=20(#79)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🎈 perf: hidden cmd window, use CREATE_NO_WINDOW flag when exec shell cmd. --- easytier/src/common/ifcfg.rs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/easytier/src/common/ifcfg.rs b/easytier/src/common/ifcfg.rs index 799c6af1..aa11ea08 100644 --- a/easytier/src/common/ifcfg.rs +++ b/easytier/src/common/ifcfg.rs @@ -49,10 +49,21 @@ fn cidr_to_subnet_mask(prefix_length: u8) -> Ipv4Addr { } async fn run_shell_cmd(cmd: &str) -> Result<(), Error> { - let cmd_out = if cfg!(target_os = "windows") { - Command::new("cmd").arg("/C").arg(cmd).output().await? - } else { - Command::new("sh").arg("-c").arg(cmd).output().await? + let cmd_out: std::process::Output; + #[cfg(target_os = "windows")] + { + const CREATE_NO_WINDOW: u32 = 0x08000000; + cmd_out = Command::new("cmd") + .arg("/C") + .arg(cmd) + .creation_flags(CREATE_NO_WINDOW) + .output() + .await? + }; + + #[cfg(not(target_os = "windows"))] + { + cmd_out = Command::new("sh").arg("-c").arg(cmd).output().await? }; let stdout = String::from_utf8_lossy(cmd_out.stdout.as_slice()); let stderr = String::from_utf8_lossy(cmd_out.stderr.as_slice());