Я пытаюсь запустить цикл while, пока на терминале не будет нажата клавиша ввода, но, насколько я могу судить, цикл останавливается на cin.get(), пока что-то не будет получено. Есть ли способ сделать ввод с терминала необязательным и перезапустить цикл while? Вот цикл из кода, если я уберу части cin.get(), он работает хорошо, я просто не могу его остановить.
while (true) {
// In each iteration of our main loop, we run the Myo event loop for a set number of milliseconds.
hub.run(1);
// Extract first timestamp from Myo (string casted as a number)
if (tstart == 0){
stringstream myStream(collector.stampTime);
myStream >> tstart;
}
// Extracting samples from DataCollector
std::array<float, 3> acceData = collector.acceSamples;
std::array<float, 3> gyroData = collector.gyroSamples;
std::array<float, 3> oriData = collector.oriSamples;
std::array<int8_t, 8> emgData = collector.emgSamples;
for (int i = 0; i < emgData.size(); i++){
if (i < 3) {
// Accelerometer samples
acce[i] = acceData[i];
pAcce[i] = acce[i];
// Gyroscope samples
gyro[i] = gyroData[i];
pGyro[i] = gyro[i];
// Orientation samples
ori[i] = oriData[i];
pOri[i] = ori[i];
}
// EMG samples
emg[i] = emgData[i];
pEMG[i] = emg[i];
}
/*
* Plot the result
*/
engPutVariable(ep, "Acce", Acce);
engPutVariable(ep, "Gyro", Gyro);
engPutVariable(ep, "Ori", Ori);
engPutVariable(ep, "EMG", EMG);
engEvalString(ep,"EMG_gather");
// Extract timestamps from Myo (string casted as a number) and compute elapsed time
stringstream myStream(collector.stampTime);
myStream >> tend;
elapsedTime = (tend - tstart)/1000000;
// Keep track of how many runs Myo has performed
x++;
if (x % 30 == 0){
std::cout << x << endl;
}
if (cin.get() == '\n')
break;
else if (cin.get() == '')
continue;
}
std::cout <<
? У меня есть сомнения. Мои программы слишком много раз застревали в тупикеmalloc
, чтобы это выяснить, теперь я просто устанавливаюvolatile std::sig_atomic_t
и возвращаюсь. 04.12.2016std::cout
не столько безопасен для сигналов, он просто не определен для вызова любой стандартной библиотечной функции из установленного пользователем обработчика сигналов в способом, который я первоначально опубликовал. 04.12.2016