Как при посыле сигнала вывести процент выполнения цикла?

int a = 1;
for(int i = 0; i < 1000; i++){
     a = a * i;
}

Ответы (2 шт):

Автор решения: eri
#include <signal.h>
#include <stdio.h>

int flag;

void mysig(int signum) {
  flag = 1;
}

int main() {

  signal(SIGUSR1, mysig);

  int a = 1;
  for (int i = 0; i < 1000; i++) {
    a = a * i;
    if (flag == 1) {
      flag = 0;
      printf("%d\n", i / 10);
    }
  }
  return (0);
}
→ Ссылка
Автор решения: Loki

В общем, мне пришел такой вариант решения. Не знаю насколько он вообще имеет право на жизнь, но как-то так.

#include <signal.h>
#include <stdio.h>
#include <unistd.h>
void exits(int sig) {
int b;
for(double i = 1; i <= 1000; i++){
   double f = (i / 1000);
   b = f * 100;
   printf("%d%s",b, "%" );
   sleep(1);
   printf("\n");
} 
printf("For exit press Ctrl+K \n");
sleep(3);
 (void)signal(SIGINT, SIG_DFL);

}


int main() {
(void)signal(SIGINT, exits);
 while(SIGINT){ 
printf("Press Ctrl+C to start and see the progress status.\n");
  sleep(1);}
}
→ Ссылка