19 Ekim 2017 Perşembe

poll

Giriş
İlk parametre pollfd dizisidir. İkinci parametre diziniz uzunluğudur. Üçüncü parametre milisaniye cinsinden en fazla kaç ne kadar bekleneceğidir.

İlginlendiğimiz event'leri events alanına yazarız. Çağrı sonunda revents alanında sonuçları alırız.

POLLIN
Okuma için kullanılır.

POLLOUT
Yazma için kullanılır.

POLLPRI
Sanırım GPIO pin'inde durum değişkliği olursa kullanılır.

Örnek
Tek bir file descriptor için şöyle yaparız.
int ret_poll= poll( &pollfd, 1, 10000 );  //10sec timeout

Örnek
Şöyle yaparız.
struct pollfd fds[1];
fds[0].fd = ...;
fds[0].events = POLLIN;

int pollrc = poll(fds, 1, poll_timeout); // blocks until data arrives or times out

if (pollrc < 0) { //Error
  ...
}
else if (pollrc == 0) //timeout
{
  ...
}
else if (pollrc > 0) {

  if ((fds[0].revents & POLLIN) == POLLIN) {
    ...
  }
}

Hiç yorum yok:

Yorum Gönder