调试时,Boost.Asio object_handle不会等待stdin

时间:2014-07-16 23:40:49

标签: windows visual-studio boost-asio

我正在尝试使用Boost.Asio' object_handle等待来自控制台的输入:

int main()
{
    using namespace boost::asio;

    io_service io;

    windows::object_handle in(io);
    in.assign(::GetStdHandle(STD_INPUT_HANDLE));

    in.wait();

    io.run();
    return 0;
}

如果我从终端运行它,这是有效的,但是当我尝试使用Visual Studio调试它时,它会跳过wait()。发生了什么事?

1 个答案:

答案 0 :(得分:1)

Windows控制台应用程序可以创建自己的控制台,也可以附加到现有控制台(例如父命令shell)。这可能是造成差异的原因。

您可以通过start cmd /c myprog与``start / b cmd / c myprog`之类的内容来影响控制台分配,或者您可以明确地创建控制台

具有背景和API的MSDN文章位于: