I am using fork() to implement a TFTP server right now. If my server does not hear from another party for 20s, how can I use SIGALRM
to abort the connection?
Here is a part of my code:
while (1)
{
pid = fork();
if ( pid == -1 )
{
return EXIT_FAILURE;
}
if ( pid > 0 )
{
wait(NULL);
close(server_socket);
}
else
{
do
{
n = recvfrom(server_socket, buffer, BUF_LEN, 0,
(struct sockaddr *)&sock_info, &sockaddr_len);
}while(n > 0);
}
}