有没有办法阻止_popen打开dos窗口?

8 c++ windows shell popen

我使用_popen启动进程来运行命令并收集输出

这是我的c ++代码:

bool exec(string &cmd, string &result)
{
   result = "";

   FILE* pipe = _popen(cmd.c_str(), "rt");
   if (!pipe)
      return(false);

   char buffer[128];
   while(!feof(pipe))
   {
        if(fgets(buffer, 128, pipe) != NULL)
               result += buffer;
   }
   _pclose(pipe);
   return(true);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在没有控制台窗口打开的情况下这样做(就像目前在_popen语句中那样)?

Mat*_*lia 3

据我所知,你不能1:你正在启动一个控制台应用程序(cmd.exe,它将运行指定的命令),并且Windows在启动控制台应用程序时总是创建一个控制台窗口。


  1. 不过,您可以在进程启动后隐藏窗口,或者如果将适当的标志传递给 ; 甚至可以将其隐藏起来CreateProcess。问题是,_popen不要传递这些标志,因此您必须使用 Win32 API 而不是_popen创建管道。