从Linux上的另一个线程中断cin.getline()

时间:2014-03-23 19:27:59

标签: linux multithreading c++11

我正在使用我的无线电发射器并将其移植到Linux。这是问题所在:

void input_thread()
{
    char buffer[128];
    cout << "Waiting for input\n";
    for (;;)
    {
        cout << "say> ";
        if (cin.getline(buffer, 127).fail())
            // Ctrl+C
            break;
        else if (strlen(buffer) == 0)
            continue;
        signal_source.feed(buffer);
    }
}

我使用std :: thread并希望它在获得Ctrl + C时打破循环。这段代码在Windows上运行良好,但在Linux上运行不正常。我想知道是否有办法安全地打破循环,以便我可以加入线程而不会导致死锁?感谢。

0 个答案:

没有答案