gettimeofday e settimeofday em c

gettimeofday e settimeofday em c
“Muitos de nós saberão sobre as duas funções relacionadas ao tempo no sistema operacional Linux. Eles são a função gettimeofday () e settimeofday (). Ambas as funções nos ajudam a determinar o tempo real na plataforma Linux. Na conversa de hoje, exploraremos as características e mecanismos funcionais dessas funções.

No começo, entenderemos a função gettimeofday ().”

gettimeofday ()

A função gettimeofday () é uma função padrão cuja definição é escrita em um arquivo de cabeçalho na biblioteca C denominada sys/time.h.

Sintaxe
A sintaxe da função gettimeofday () é descrita abaixo

Int gettimeofday (struct timeVal * tm_vl, fuso horário da estrutura * tm_zn)

GetTimeOfday () Função leva dois parâmetros como argumentos dentro de seus parênteses. Um deles é o tm_vl variável que contém o TimeVal Datatype, e outro é o tm_zn variável que contém dados de dados do fuso horário.

Existem dois membros de dados padrão que existem na estrutura do tempo. O primeiro é TV_SEC, E outro é TV_USEC. TV_SEC representa a quantidade de tempo em segundos e a TV_usec representa a quantidade de tempo em um microssegundo.

Atualmente, a estrutura do fuso horário não é usada, pois diminui em seu valor por um período de tempo. Para isso, passamos NULO Como um valor da estrutura do fuso horário.

Exemplo de programação 1
Este é um programa para obter o tempo para uma função específica executar.

#incluir
#incluir
#incluir
#incluir
float tm_com (struct timeval *str, struct timeval *lst)

return (lst-> tv_sec-str-> tv_sec) + 1e-6*(lst-> TV_USEC-STR-> TV_USEC);

iteração vazia (size_t contagem)

para (int j = 0; j %d) tempo necessário: %0.8f Sec \ n ",
count1, tm_com (& str, & lst));
gettimeOfday (& str, nulo);
iteração (contagem2);
gettimeofday (& lst, nulo);
Printf ("Função do iterador (contagem de loop -> %d) Tempo necessário: %0.8f Sec \ n ",
contagem2, tm_com (& str, & lst));
saída (exit_success);

Saída

Explicação
Dentro da função Main (), criaremos duas variáveis ​​denominadas “str" e "LST" de uma estrutura chamada “Timeval.” Também criaremos duas variáveis ​​nomeadas "Count1" e “Count2”.

Dentro da função gettimeofday (), passaremos "STR" e NULO. Então vamos chamar uma função chamada "iteração," Qual definição está escrita acima da função principal (). Dentro da função iteração (), passaremos o "Count1". Dentro da função gettimeofday (), passaremos "LST" e NULO.

Depois disso, de "LST" e "STR" Teremos o tempo de execução para a função "iteração" para valor "Count1" Como primeira saída.

O processo acima é feito novamente para outro valor maior passado pela variável “Count2”.

É por isso que observamos que o tempo de execução para “Count2” é mais que "Count1".

Exemplo de programação 2
Este programa mostra o valor de retorno do getTimeOfday sobre sucesso ou fracasso.

#incluir
#incluir
#incluir
int main (int argc, char *argv [])

estrutura timeval de estrutura;
int ld;
ld = gettimeOfday (& atual, nulo);
if (ld == 0)
printf ("Esta declaração está executando . Isso significa que gettimeofday é bem -sucedido. \ n ");
printf ("Segundo: %lu \ n microssegundo: %06lu \ n",
atual.TV_SEC, atual.TV_USEC);

outro
printf ("Esta declaração está executando . Isso significa que GettimeOfday não tem sucesso!! errno = %d \ n ",
errno);
retornar -1;

retornar 0;

Saída

Explicação
Aqui, criamos uma variável chamada "atual" sob a estrutura do tempo e uma variável do tipo inteiro nomeado "Eu ia. Agora chamaremos a função gettimeofday () e passaremos dois parâmetros como argumentos. Os dois argumentos são "atual" e NULO. Qualquer valor retornará esta função; será atribuído à variável de identificação.

Se o “Eu ia”O valor é zero, a função gettimeofday () é executada com sucesso e imprime o tempo em segundo e microssegundo; caso contrário, não execute com sucesso.

setTimeOfday ()

A função setTimeOfday () é uma função padrão cuja definição é mencionada em um arquivo de cabeçalho na biblioteca C denominada sys/time.h. Esta função nos ajuda a chegar ao tempo do relógio para o padrão de tempo universal.

Sintaxe

A sintaxe da função setTimeOfday () é descrita abaixo.

int setTimeOfday (struct timeVal * tm_vl, fuso horário da estrutura * tm_zn)

A função setTimeOfday () leva dois parâmetros como argumentos dentro de seus parênteses. Um deles é tm_vl; É um ponteiro da estrutura do tempo que representa o tempo em segundos e microssegundos. Outro é tm_zn. Atualmente, a estrutura do fuso horário não é usada, pois é datada em seu valor por um período de tempo. Para isso, passamos NULO Como um valor da estrutura do fuso horário.

Retorna
Na execução bem -sucedida da função settimeofday (), ele retorna 0.

Na execução malsucedida da função setTimeOfday (), ele retorna -1.

Exemplo de programação 3
Esta função mostrará o valor de retorno na execução bem -sucedida desta função.

#incluir
#incluir
#incluir
int main ()

struct timeval tm_vl;
int sreturn;
tm_vl.TV_SEC = 1885151555;
tm_vl.TV_USEC = 0;
sreturn = setTimeOfday (& tm_vl, null);
if (sRETURN == 0)

printf ("SettimeOfday é executado sem nenhum erro \ n");

outro
printf ("SettimeOfday não tem sucesso"
"errno = %d \ n", errno);
retornar -1;

retornar 0;

Saída
Correr sem sudo e assim settimeofday () falhou.

Corra com sudo e assim settimeofday () é bem -sucedido.

Explicação
Aqui criamos duas variáveis ​​nomeadas “TV_SEC” e “TV_USEC.” Ambas as variáveis ​​são um membro do "Timeval" estrutura e atribua algum valor. Em seguida, chamaremos a função setTimeOfday () e, dentro da função, passaremos o "TM_VAL" variável. Qualquer que seja o valor retornar, esta função será atribuída ao “SREGURN” variável. Se o “SREGURN” Retornos variáveis ​​0, então essa função foi executada com sucesso e fornece sua saída; caso contrário, não executado com sucesso e imprime o valor de "Errno" Para um valor específico (para este programa, é 1).

Aqui no começo, realizamos o programa sem sudo, e é por isso que o setTimeOfday () não pôde ser executado com sucesso e retornamos -1.

Pela segunda vez, executamos o programa com sudo, e settimeofday () é bem -sucedido e retornado 0.

Conclusão

Na discussão anterior, obtivemos muitas informações sobre a função gettimeOfday () e SettimeOfday (). Essas duas funções são as funções mais importantes em termos da plataforma Linux na linguagem C no conteúdo do tempo. Para obter tempo como entrada e definir o tempo para o sistema, essas duas funções nos ajudam muito a configurar o sistema.