Надо вывести информацию по 1-ым десяти сигналам. Вот код, который по идее это делает. Но он не компилируется, хотя, вроде, все правильно... Помогите, пожауйста, разобраться.
компилирую с ключами -ansi -pedantic -Wall -g
Код:
#define _POSIX_C_SOURCE 2
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>
volatile int count = 0;
void handler(int sig_num, siginfo_t* siginfo, void* context)
{
count++;
if (count <= 10)
{
printf("Number of signal: %d\nPid: %d\n", sig_num, siginfo->si_pid);
}
else
{
printf("You send more than 10 signals.\n");
exit(0);
}
}
int main()
{
struct sigaction sa;
memset(&sa, 0, sizeof(sa));
sa.sa_handler = NULL;
sa.sa_sigaction = handler;
sa.sa_flags = SA_SIGINFO;
int i;
/*
SIGKILL = 9;
SIGSTOP = 19;
*/
for (i = 0; i < 32; ++i)
if (i != 19 && i != 9)
{
if (sigaction(i, &sa, NULL) < 0)
{
printf("Sigaction rror.\n");
return 1;
}
}
while(1)
{}
return 0;
}