Как контролировать время выполнения в C - PullRequest
1 голос
/ 10 декабря 2010

У меня есть программа на C, которая печатает простые числа в файл .txt.Я хочу, чтобы программа спросила меня время выполнения по минутам.Попытка решить с помощью кода.

#include <stdio.h>
#include <time.h>

int main()
{
    execute();
    return(0);
}

int execute(int minute)
{
    time_t now;
    time(&now);
    struct tm *tmp = localtime(&now);
    printf("How long you want to execute the program by minute? ");
    scanf("%d",&minute);
    printf("%d %02d %02d\n",tmp->tm_hour, tmp->tm_min+minute, tmp->tm_sec);
    return(minute);
}

и вот также код, который я хочу выполнить.не решить это самостоятельно.Кто-нибудь может мне помочь?

Ответы [ 2 ]

2 голосов
/ 10 декабря 2010

На некоторых платформах есть функция alarm(), которую вы можете использовать для отправки сигнала в ваше приложение через указанное количество секунд.

Если вы не используете Windows, man alarm должно дать вам некотороеинформация об этой функции.Если вы работаете в Windows, может потребоваться другой подход.


В другой заметке вы должны рассмотреть возможность использования имен переменных, которые что-то значат для кода, который вы пишете.Для обычного читателя имя BX_REGISTER ничего не значит.Возможно, стоит изменить имя на number_to_testAX_REGISTER на next_number или что-то в этом роде).

0 голосов
/ 10 декабря 2010

Поскольку вы работаете в цикле 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 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...