Как при посыле сигнала вывести процент выполнения цикла?
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);}
}