2010-08-23 5 views
0

La source de here dit qu'il est censé fonctionner sur l'iPhone. J'ai travaillé avec, mais j'ai 2 erreurs, en disant que msleep() n'est pas déclaré. J'ai essayé d'inclure unistd.h, time.h, et de nombreux autres. Comment puis-je faire en sorte que cela fonctionne? Merci.Où est-ce que msleep est déclaré?

+1

puis-je vous demander si vous avez fait l'évidence et recherché la chaîne de texte dans votre répertoire d'en-tête système entier, au lieu de deviner quelques champs à examiner? – Mawg

+0

ou avez-vous google? http://nfosolutions.com/doc_link/C/a_doc_lib/libs/basetrf1/msleep.htm – Mawg

+0

En toute justice c'est pour AIX - voici l'équivalent de BSD avec un ensemble d'inclusions: http://www.unix.com/man-page/all/9/msleep/(Bien que Darwin soit basé sur BSD, je vais essayer.) – Rup

Répondre

4

Il n'y a rien dans ce fil lié indiquant que msleep est disponible. L'auteur original, bagusflyer, effectivement mis en œuvre leur propre msleep, indiquant:

Désolé. Peut-être que j'ai manqué quelque chose dans mon code. Voici mon msleep:

#include <sys/time.h> 
void msleep (unsigned int ms) { 
    int microsecs; 
    struct timeval tv; 
    microsecs = ms * 1000; 
    tv.tv_sec = microsecs/1000000; 
    tv.tv_usec = microsecs % 1000000; 
    select (0, NULL, NULL, NULL, &tv); 
} 

Cependant, vous devez faire attention à l'aide de ce code car je pense, de la mémoire, que select() est interruptible.

5

Le msleep() est un artefact non standard provenant des premiers BSD, avant que les clock_nanosleep() et nanosleep() ne le fassent dans POSIX.

Il est nonportable. Sur certains systèmes, il est disponible par défaut - sur d'autres, il faut compiler le code avec _BSD_SOURCE define.

L'iPhone est un parent éloigné de Mac OS X, qui est un parent éloigné de NeXT, qui est très éloigné de BSD 4.x. Donc, la fonction peut être coincée dans une en-tête/bibliothèque quelque part, mais vous ne devriez pas l'utiliser quand même. Si la mémoire me sert, vérifiez la méthode statique de NSThreadsleepForTimeInterval:.

1

Peut-être que vous pouvez utiliser usleep(). C'est aussi dans unistd.h.

Questions connexes