Как правильно использовать сигналы в C?
Я должен написать программу под названием BuzzOff.c. Моя программа должна принимать 3 целочисленных аргумента как таковые:
$ BuzzOff 10 99999 2
Моя программа должна спокойно считать от 0 до 0,001 приращений и сохранять промежуточный итог полученного произведения и счетчика, т.е. total += count * <arg1>;
Я прочитал сигналы, но я все еще не уверен, как они работают. Как заставить мою программу печатать текущий промежуточный итог при получении SIGUSR1?
Это то, что я до сих пор:
#include<stdio.h>
#include<signal.h>
float total;
void sig_handler(int signo)
{
if (signo == SIGUSR1)
printf("total: %f\n", total);
}
int main(int argc, char *argv[])
{
if( argc!=4 ) {
printf("need three arguments\n"); return(1);
}
float count;
for (count = 0; count < argv[3]; count += 0.001)
total += count*argv[2];
return 0;
}
1 ответ
Вам нужно указать обработчик для SIGUSR1.
Что-то вроде..
сигнал (SIGUSR1, sig_handler);
и вызовите это в main()