Milisaniye C alternatif uyku bir işlevi var mı? | Netgez.com
SORU
21 Temmuz 2009, Salı


Milisaniye C alternatif uyku bir işlevi var mı?

Windows derlenmiş bir kaynak kod var. Bu Red Hat Linux üzerinde çalıştırmak için dönüştürme duyuyorum.

Kaynak kodu <windows.h> başlık dosyası dahil ve programcı Sleep() işlevi milisaniye süre beklemek kullandı. Bu Linux üzerinde çalışmaz.

Ancak, sleep(seconds) fonksiyonu kullanabilirim, ama o saniyede tam sayı kullanır. Saniye için milisaniye dönüştürmek istemiyorum. Gcc Linux üzerinde derleme ile kullanabileceğim alternatif bir bekleme işlevi var mı?

CEVAP
21 Temmuz 2009, Salı


Evet eski POSIX standartlar usleep() Bu Linux üzerinde kullanılabilir tanımlanmış:

   int usleep(useconds_t usec);

AÇIKLAMA

Bu usleep() fonksiyonu askıya alır ... bu sürecin yürütme (en az) usec mikrosaniye. Uyku hafifçe uzatılmış olabilir sistem herhangi bir aktivite veya zaman çağrı işleme veya grup tarafından sistemin parçalı zamanlayıcılar.

usleep() alırmikrosaniyegiriş çarpmak zorunda kalacak, böylece , sırayla 1000 milisaniye içinde uyu.


usleep() beri onaylanmaz ve daha sonra POSIX kaldırıldı; yeni kod için, nanosleep() tercih edilir:

   #include <time.h>

   int nanosleep(const struct timespec *req, struct timespec *rem);

AÇIKLAMA

nanosleep() en azından *req belirtilen geçti ya kadar, ya da arama parçacığının yürütülmesini askıya alır bir işleyici çağırma tetikleyen bir sinyal teslim arama iş parçacığı veya İşlem sona erer.

Yapı timespec nanosaniye hassasiyetle zaman aralıklarını belirtmek için kullanılır. Aşağıdaki gibi tanımlanır

       struct timespec {
           time_t tv_sec;        /* seconds */
           long   tv_nsec;       /* nanoseconds */
       };

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • 24 Канал

    24 КанаÐ

    5 ÅžUBAT 2006
  • Floortile83

    Floortile83

    16 Ocak 2010
  • MrExcite96

    MrExcite96

    17 ÅžUBAT 2011