cteni ze socketu

Michal Dobes dobes na tesnet.cz
Středa Listopad 13 17:44:05 CET 2002


Ales Horak wrote:
> K tomu uz jsem dosel taky, ale presto mi neni jasne, proc se proces po
> preruseni signalem alarm znovu vraci zpet, presne tam, kde byl prerusen -
> podle mych chabych znalosti, by mel pokracovat o krok (rekneme radek ve
> zdrojaku) dale - nebo ne ?

Protoze tomu z historickych duvodu je. Nektere funkce pro prerusenim
signalem se restartuji a nektere ukonci a vraci EINTR. Jde o ruzny
pohled ruznych unixu a specifikaci. :-)
Chovani se da (tusim) nastavit pri otvirani socketu a nebo
by to mohlo jit takto (by voko):

struct  sigaction siga;

memset(&siga, 0, sizeof(siga));
sigemptyset(&siga.sa_mask);
siga.sa_flags=0;
siga.sa_flags|=SA_INTERRUPT;
siga.sa_handler=SIG_IGN;

sigaction(SIGALRM, &siga, NULL);

while(1)
 {
   read(sockd, &znak, 1);
   if (errno==EINTR)break;
   /* tady je par nedulezitych radku, kde se precteny znak nejak
      zpracovava */
 }
alarm(0);


Další informace o konferenci Linux