我正在使用我的无线电发射器并将其移植到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上运行不正常。我想知道是否有办法安全地打破循环,以便我可以加入线程而不会导致死锁?感谢。