read a alarm

sci scipraha na applet.cz
Středa Prosinec 18 12:48:34 CET 2002


Dobry den,
doufam, ze to neni prilis OT, ale mam tu nejakou potiz se signaly 
ve spojeni s funkci read. Ta by se mela prerusit pokud proces dostane
signal (SIGALRM) a v errno by se mel objevit kod EINTR. Nic takoveho se
ovsem nestane, i kdyz program na signal reaguje. Zkousel jsem to na SCO 
(nejakem starsim), kde to takto funguje. Muzete mi poradit, co delam
blbe? Prikladam i src.

Diky Michal Vojan



---------------------------------------
#include <unistd.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>

void CatchAlarm( int sig)
{
        fprintf(stderr,"Mam alarm\n");
}

int main()
{
        int bread;
        char buf[100];
        FILE *ttin = (FILE *)0;
        ttin = stdin;

        signal ( SIGALRM, CatchAlarm ) ;

        fprintf(stderr,"PID: %d\n\n",getpid());
        fprintf(stderr,"\nZadej neco na deskriptor: %d\n",fileno(ttin));
        bread=read(fileno(ttin),&buf,100);
        fprintf(stderr,"buffer: %s\n",buf);
}


Další informace o konferenci Linux