/* simple talk program SIGIO signal handler */ #include <stdio.h> #include <signal.h> #include <fcntl.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define MAXLINE 512 void sigio_handler(int signo) { int n; char recvline[MAXLINE+1]; int peerlen; struct sockaddr_in peer_addr; extern int sockfd; if ((n = recvfrom(sockfd, recvline, MAXLINE, 0, (struct sockaddr *) &peer_addr, &peerlen)) < 0) err_sys("recvfrom"); recvline[n] = '\0'; printf("-> %s", recvline); fflush(stdout); return; }