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

  • apenney888

    apenney888

    27 EKİM 2010
  • Atlantic Records

    Atlantic Rec

    15 Aralık 2006
  • theatre2film

    theatre2film

    12 NİSAN 2006