【问题标题】:Multiple Windows CMD多个 Windows CMD
【发布时间】:2013-01-31 01:31:42
【问题描述】:

我正在使用cmd 开发分级机。

我想知道是否可以在一个运行时分配另一个cmd。

我想使用cmd 来测量进程使用的时间,如果时间超过时间限制,则终止它。

【问题讨论】:

  • 为什么需要两个控制台窗口呢?无论如何,您只能拥有一个,如here 所述。对于计时器,您可以使用 SetTimer 之类的东西并进行回调调用 std::exit。
  • 这似乎是一个AB问题,你想知道A,但问B。你真正的问题是:How do I automatically terminate a process after a certain time in Windows?,对吧?
  • “使用cmd”是什么意思?如果你写一个 c/c++ 程序,你用 gcc/visual studio 编译它,你会得到一个不涉及 cmd 的输出可执行文件。
  • @us2012 你的意思是XY Problem as shown on meta?
  • @AlvinWong 我的评分器无法编译。只需检查 exe 的输出

标签: c++ c windows cmd


【解决方案1】:

要启动一个新的 cmd 窗口,你可以这样做:

cmd.exe /c yourprogram.exe

你也可以使用

start yourprogram.exe

两者都将创建一个新的 cmd.exe 并运行您的程序。如果您的程序是控制台应用程序,第二个(启动)将创建 cmd,否则它将运行它。

【讨论】:

    【解决方案2】:

    由于这不会很快进行,我将给出一个在 n 毫秒后退出的标准方式。通过将其设为模板函子(我的意思见sleep_for 的声明)并为其提供std::chrono 单位,可以轻松地将其更改为任何时间单位。

    int main() {
       std::thread waiter([](unsigned long long milliseconds) {
          std::this_thread::sleep_for(std::chrono::milliseconds(milliseconds));
          std::exit(0);
       }, 5000);
    
       int i{};
       while (1) {
          std::this_thread::sleep_for(std::chrono::seconds(1));
          std::cout << i++ << '\n';
       }
    }
    

    首先,我使用一个接受毫秒数的过程创建一个线程,并通过传递 5000 毫秒来启动它。我输入参数是为了便于转换到上述函子。它休眠了那么久,然后退出程序。同时,主线程每秒只输出一个计数。

    对于演示,see here。这是输出:

    0
    1
    2
    3

    【讨论】:

      猜你喜欢
      • 2018-07-09
      • 2014-12-08
      • 2010-09-16
      • 2019-01-26
      • 1970-01-01
      • 2020-06-25
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多