Какие проблемы могут возникнуть с помощью следующей программы C? Должны быть некоторые проблемы / ошибки при выполнении следующего кода, но я не могу их идентифицировать, потому что я довольно плохо знаком с сигналами, и это выглядит хорошо для меня.
#include <signal.h>
#include "ourhdr.h"
static void sig_alrm(int);
int
main(void)
{
int n;
char line[MAXLINE];
if (signal(SIGALRM, sig_alrm) == SIG_ERR)
err_sys("signal(SIGALRM) error");
alarm(10);
if ( (n = read(STDIN_FILENO, line, MAXLINE)) < 0)
err_sys("read error");
alarm(0);
if (write(STDOUT_FILENO, line, n) != n)
err_sys("write error");
exit(0);
}
static void
sig_alrm(int signo)
{
printf("alarm\n");
return; /* nothing to do, just return to interrupt the read */
}