The UNIX and Linux Forums  

Go Back   O UNIX e Linux Forum > Sistemas Operativos > HP-UX
.
google unix.com



HP-UX HP-UX (Hewlett Packard Unix) Hewlett-Packard é propriedade da aplicação do sistema operativo Unix, baseado no Sistema de V.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
adicione a saída de uma consulta para uma variável para ser utilizado em outra consulta hazno Programação Shell Script e 0 03-24-2009 08:52
Mac OS X: Por que o Mac pode não dormir ou permanecer na modalidade do sono iBot OS X suporte RSS 0 03-19-2009 10:50
localtime para converter unixtime AshishK UNIX & avançada para usuários experientes 2 10-30-2007 10:22
Perl + localtime () Optimus_P Programação Shell Script e 3 07-09-2003 06:32
dormir Anna UNIX para Dummies Perguntas & Respostas 5 07-11-2001 12:52

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Avaliação: Thread Rating: 1 votes, 4.00 average. Display Modes
  #1 (permalink)  
Old 06-29-2009
nsvora nsvora is offline
Usuário
  
 

Join Date: Jun 2009
Posts: 2
sono localtime & query

Oi,
Eu trabalho em HPUX aplicação e eu tinha uma dúvida quanto ao sono & localtime chamada de sistema em HPUX.
Aqui está o código que temos:

const uint32_t WAKE_INTERVAL_SEC (30 * 60);
while (true) (

/ / Saiba que horas são
tempo (& currentTime);

/ / Thread para alinhar a acordar com relógio 30 minutos ou seja, se está actualmente 9:20 despertar após 10 minutos,
/ / Se é actualmente 9:05, acorda-se depois de 25 minutos.
/ / Calcular restante número de segundos nesta meia hora.
sleepTime \u003d WAKE_INTERVAL_SEC - (currentTime WAKE_INTERVAL_SEC%);
while (1) (

sono (sleepTime);

/ / Do trabalho regular
tptr \u003d localtime (& currentTime);

if (12 \u003d\u003d tptr-> tm_hour & & tptr-> tm_min <WAKE_INTERVAL_MIN)
(
/ / Noon trabalho a ser feito
)
)

Comportamento esperado:
Tal como previsto no código acima, nós esperamos que cada meia hora, algum trabalho a ser feito, e se esse tempo passa a ser entre 12 e 12:30 horas, então nós também fazer trabalhos.

Comportamento real:
Na maioria das vezes ele funciona como o esperado. Mas algumas vezes, parece dormir para sair de alguns segundos antes de 12:30 e, portanto, a lógica falha e faz o trabalho meio-dia. Idealmente gostaria de esperar que a condição noon trabalho a falhar, uma vez que a discussão tem acordou 12:30 e, por conseguinte, não pode trabalhar satisify noon condição. (Trace no syslog indica que o trabalho regular foi iniciada em 12:30, mas ela própria madeireira teria tomado algum tempo, e eu suspeito sono poderia ter acordado cedo)

Pergunta:
- Posso dormir despertar antes do horário do tempo (com excepção SIGALRM)? Existem outras condições em que poderia dormir antes da hora programada despertar?
- Posso localtime utilizados para comparação retorno hora errada?
- É possível que haja algum tempo ajustamentos feito internamente (pode ser para o relógio interno de deriva, etc), que resulta em sono despertar um segundo mais cedo do que esperava a hora local ou fazer algum tipo de ajuste, por algum motivo?

Todas as entradas nesta matéria são apreciados.

Thanks & Regards,
NSV
  #2 (permalink)  
Old 06-29-2009
jim McNAMARA jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Localização: NM
Mensagens: 5.808
Porque não utilizar ou pelo cron para agendar o seu código? Estes são construídos para executar comandos ou scripts em exatamente o momento certo.

Plus, sono (1) não é garantida a dormir exactamente um segundo.
  #3 (permalink)  
Old 06-30-2009
nsvora nsvora is offline
Usuário
  
 

Join Date: Jun 2009
Posts: 2
Jim oi,
Obrigado pela resposta.
Na verdade threads podem despertar qualquer momento, baseado no programador, de modo que a lógica foi o de verificar o momento em que a discussão precisa dormir para que o seu alinhamento com 30 minutos intervalo.

With Regards,
nsvora
  #4 (permalink)  
Old 07-01-2009
jim McNAMARA jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Localização: NM
Mensagens: 5.808
Tentei transmitir esta claramente:

Você não pode garantir o sono é exactamente quanto tempo. Você tem que adicionar algumas poça (atamancar fator) no seu cálculo segundo uma maneira ou de outra, ela não vai trabalhar perfeitamente cada vez - exemplo assume que você tem POSIX compliant tempo - ou seja,., no segundo salto.:

Código:
calculate duration of sleep:
time_t how_long_to_sleep=1800;
how_long_to_sleep-= time(NULL) % 1800;
sleep(!how_long_to_sleep ? 1800 : how_long_to_sleep);

tempo de ensaio após acordar:

Código:
time_t now=time(NULL);
now=now % 1800;
if( now < 2 && now > 1797)
   // sleep period ended close enough
else
  // sleep period is off by too much
fi

Você também pode tentar usleep (valor), que tem melhor granularidade na MS, mas novamente o valor é o mínimo. Pode ser mais longo. Por exemplo, uma prioridade maior do que essa uma tarefa está sendo executada.
Reply

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Desligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 06:28.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0