remplacer la boucle infini sans nouveau fil

for(;;) { ...// CPU usage and etc... printf("Server is up: %.0f sec\n",diff_time); //seconds of running for example sleep(1); } ...//other server code 

J’écris un programme de serveur. Je dois fournir des informations toutes les secondes sur l’utilisation du processeur, etc. Le code ci-dessus fonctionne, mais le code serveur après la boucle ne sera jamais terminé. Quelqu’un at-il une idée de comment remplacer cette boucle infini par quelque chose qui fera chaque seconde? Malheureusement, sans fil et processus enfant. Toutes les autres idées.

hmmm intéressant

si vous êtes en linux, faites le ci-dessous

man -a timer_create

devrait être en mesure de fournir une solution sinon cliquez ici

Si le serveur accepte les connexions, vous pouvez utiliser select() / poll() / epoll_wait() pour attendre un événement lisible.

Vous pouvez choisir d’utiliser une attente chronométrée pour l’événement, dans laquelle vous feriez votre gestion temporisée après un délai d’attente. Ou, vous pouvez utiliser un minuteur d’intervalle (voir setitmer() ). Pour ce dernier, votre gestionnaire de signal d’alarme peut réveiller votre attente en écrivant sur un canal , où la fin de lecture est également attendue pour un événement lisible.

Pas de threads? Pas même les threads POSIX ? Eh bien, la seule autre façon de penser à cela serait la suivante:

 /* * Pseudocode. * The purpose is to model what the code might look like. */ #include  #include  /* Initialization */ time_t t0 = time(0); while (serverRunning) { /* Server code */ if (difftime(time(0), t0) >= 60.0) { t0 = time(0); /* Print information here */ printf("Info"); printf("More Info"); printf("Even More Info"); } } 

Mais cela suppose que votre backbone est en C pour commencer. Pourriez-vous fournir plus d’informations?