Поскольку вы работаете в цикле while, просто получите текущее время вне цикла while, добавьте минуты, а также получите время в конце цикла while.Что-то вроде:
time_t now;
time_t end_time;
now = time();
end_time = now + (minutes * 60);
while(now < end_time)
{
...Do processing here...
now = time();
}
Один из недостатков этого метода заключается в том, что если для запуска isprime()
требуется очень очень много времени, то вы можете значительно превысить время окончания.Один из способов решить эту проблему - передать значение end_time
в isprime()
и проверить его в цикле в этой функции.Или просто нажмите Ctrl-C в терминале, где вы запускаете программу:)
Любая запись в файлы в случае сбоя программы - вы не захотите терять часы работы, но я предлагаювы только читаете значение из lastnumber.txt до цикла while, а после этого просто сохраняете его в памяти.Это ускорит ваши программы.
Кроме того, если только вы не работаете в Windows, которая имеет ужасную семантику блокировки файлов, может стоить держать ручки записи файлов открытыми все время, чтобы сохранить циклы, постоянно открывающие и закрывающие файлы.1011 *