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