RE: [Linux-programlama] select

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Serdar KÖYLÜ (serdarkoylu@fisek.com.tr)
Date: Fri 19 Nov 2004 - 12:02:49 EET


Selamlar..

Mesele asenkron çalışmanın zevkidir. Ama elbette burada elinde çekiç
olan adamı oynamakta gayet mümkündür.

int error_stat=0;

void sigiohandler(int sig) {
   if (read_from_socket())
        error_stat = errno_hede;
}

void sigalrmhandler(int sig) {
   if (!error_stat) {
      printf("30 Saniye geçti gitti\n");
   }
   setitimer(...);
   error_stat = 0;
}

int main(void) {
    ....
    ....
    signal(SIGIO, sigiohandler);
    signal(SIGALRM, sigalrmhandler);
    setitimer(...);
    fcntl(socket, FASYNC|HEDE|vs);
}

Umarim biraz anlaşılıyordur. setitimer() size hassas bir timer sunar. Bu
timer ile kendinize bir timed signal yollatabilirsiniz kolayca (!?).

Gene tekrar edeyim, belki, sizin uygulamanız bu tür işler için makul
olmayabilir. Ama ASYNC çalışmanın nimetlerini ve yöntemlerini fırsattan
istifade yazıvermenin dayanılmaz hafifliğide gözönünde tutulmalı..

Saygı ve sevgiler..

> Hımmm anladım çok güzel bi signal handler işleyip orada işlemlerimi yapabilirim ve selecte gerek yok anladım.
> Ama şimdi bende öle garip bir durum varki yine benim çözümüm orada geçerli gibi. Nasıl anlatsam ki şöle diyeyim mesela ;
> Bir hata durumda soketten size hata durumunu veren 3 byte lık bişi geliyor ama hata olmadığı durumda ise hiç bişi gelmiyor.
>
> Bu durumda eğer hata yok ise hiç bir zaman sizin yöntemde o signal fonksiyonlarınada gelmicek. Tamam gelmesin güzel ben işimi zaten yaparım. Ama gelirsede o zamana kadar yaptığım işlemler boşa gidecek yani beklememde lazım.
> Ben ise şöyle yapıyorum. Bu bekleme esnasında diğer thread'i devreye sokarak bi şekilde başarılı olduğunu anlayabiliyorum ve başarılı olunca tamam sen artık select ten çık ve devam et diyorum. Başarılı olduğu noktadan itibaren select ten çıkması benim işime geliyor. Tamamen asenkron olması değil. Ama bu esnada da 30 beklemesin istedim. Çünkü zaten başarılı olmuş çıksın devam etsin dedim.

_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.