Boost.Asio object_handle tidak menunggu stdin saat debugging

Saya mencoba menggunakan object_handle Boost.Asio untuk menunggu masukan dari konsol:

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;
}

Ini berfungsi jika saya menjalankannya dari terminal, tetapi ketika saya mencoba melakukan debug ke dalamnya dengan Visual Studio, wait() dilewati. Apa yang sedang terjadi?


person Kietz    schedule 16.07.2014    source sumber
comment
terkait secara tangensial: stackoverflow.com/a/23631715/85371   -  person sehe    schedule 17.07.2014


Jawaban (1)


Aplikasi konsol windows dapat membuat konsolnya sendiri, atau dapat dilampirkan ke konsol yang sudah ada (misalnya shell perintah induk). Kemungkinan besar inilah yang menyebabkan perbedaan.

Anda biasanya dapat memengaruhi alokasi konsol dengan hal-hal seperti start cmd /c myprog vs. ``start /b cmd /c myprog`, atau Anda dapat secara eksplisit membuat konsol Anda

Artikel MSDN yang memiliki latar belakang dan API ada di sini:

person sehe    schedule 17.07.2014