2009-02-12 7 views
3

Y a-t-il une instruction wait dans c-component? par exemple, attendez 0,5 seconde avant de continuer le processus?attente instruction dans le composant C?

merci!

+0

quel système d'exploitation programmez-vous? –

+0

Que voulez-vous dire par composant C? – starblue

Répondre

7

En Posix il y a

usleep(500); 

et

nanosleep(...); 

un coup d'oeil au manuel de usleep(3) et nanosleep(2). EDIT: nanosleep semble maintenant être le chemin à parcourir, même usleep est dépréciée dans POSIX.2008 selon sa page man!

3

Pour Windows, il y a cette fonction disponible dans l'API

Sleep(500); 

Jetez un oeil sur la page de sa MSDN. Il dort pour le nombre spécifié de millisecondes.

0

sommeil est également disponible dans POSIX, la différence est que l'argument spécifie le nombre de secondes au lieu de Millisecondes le processus devrait dormir.

+0

Notez que l'utilisation de sleep() peut ne pas fonctionner comme prévu si vous utilisez également alarm(). –

7

Pour résumer et corriger un problème mineur dans le poste de Johannes Weiss (clavier non-allemand, désolé):

Dans Posix old-school, vous pouvez utiliser la fonction usleep(), qui accepte le nombre de microsecondes dormir comme un argument entier non signé. Ainsi, pour dormir pendant une demi-seconde, vous appelez:

#include <unistd.h> 
usleep(500000); /* Five hundred thousand microseconds is half a second. */ 

Pour les nouveaux programmes de style (mes pages POSIX man boîte Gentoo Linux dit qu'il est POSIX.1-2001), vous utiliseriez nanosleep (), ce qui nécessite un pointeur sur une structure qui maintient la période de sommeil. Dormir pour une demi-seconde ressemblerait à ceci:

#include <time.h> 
struct timespec t; 
t.tv_sec = 0; 
t.tv_nsec = 500000000; /* Five hundred million nanoseconds is half a second. */ 
nanosleep(&t, NULL); /* Ignore remainder. */ 

Le second argument de nanosleep() est appelée « rem », et reçoit le reste du temps, si le sommeil est interrompu en quelque sorte. Je l'ai laissé à NULL pour la simplicité, ici. Vous pouvez faire une boucle jusqu'à ce que rem soit (assez proche de) zéro, pour vous assurer de bien dormir, quelles que soient les interruptions.

Questions connexes