Как правильно использовать сигналы в 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()

Другие вопросы по тегам