Boost.Asio object_handle не ждет стандартного ввода при отладке

Я пытаюсь использовать 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(). В чем дело?


person Kietz    schedule 16.07.2014    source источник
comment
косвенно связанные: stackoverflow.com/a/23631715/85371   -  person sehe    schedule 17.07.2014


Ответы (1)


Консольное приложение Windows может создать собственную консоль или подключиться к существующей консоли (например, к родительской командной оболочке). Это, вероятно, и создает разницу.

Вы можете влиять на выделение консоли, как правило, с помощью таких вещей, как start cmd /c myprog вместо ``start /b cmd /c myprog`, или вы можете явно создать свою консоль

Статья MSDN, в которой есть предыстория и API, находится здесь:

person sehe    schedule 17.07.2014