2015-11-02 2 views
-1

Мне нужна помощь или совет в задаче программирования C, которую я получил ... Задача состоит в том, что с alarm(sec) необходимо вызывать сигнал SIGALRM. Мне нужно увеличить длинный номер int за 1 секунду и распечатать на экране, сколько раз число было увеличено за это время. Я подозреваю, что ему придется идти с alarm(1); У меня есть цикл, чтобы увеличить число ... бит абсолютно не знает, как остановить его через 1 секунду, особенно с помощью signal(SIGALRM,xxx) Должен ли я вставлять код, который у меня есть? ?Функция сигнала и тревоги

#include <stdio.h> 
#include <unistd.h> 
#include <signal.h> 

int loop_function() { 
    int counter = 1; 
    long int n = 1; 
    while(n!=0) { 
     ++counter; 
     n++; 
     printf("%d: %d\n",counter,n); 
    } 
} 

int main() { 
    loop_function(); 
} 
+0

Ok - :) Вот что я сделал ... #include #include #include INT loop_function() { INT счетчик = 1; long int n = 1; while (n! = 0) { ++ counter; n ++; printf ("% d:% d \ n", счетчик, n); } } int main() { loop_function(); // Я застрял сейчас ... } – slavmir

+0

Почему это выглядит так странно? – slavmir

+0

@slavmir Редактировать ответ с кодом и начать каждую строку с четырьмя пробелами :) – Jacob

ответ

0

Возможно, это то, что вы ищете.

#include<stdio.h> 
#include<signal.h> 
#include<unistd.h> 

void sigalrm_handler(int); 
int loop_function(); 

static int counter = 1; 
static long int n = 1; 

int main() 
{ 
    signal(SIGALRM, sigalrm_handler); 
    //This will set the alarm for the first time. 
    //Subsequent alarms will be set from sigalrm_handler() function 
    alarm(1); 

    printf("Inside main\n"); 

    while(1) 
    { 
     loop_function(); 
    } 
    return(0); 
} 

void sigalrm_handler(int sig) 
{ 
    printf("inside alarm signal handler\n"); 
    printf("%d: %d\n",counter,n); 
    //exit(1); 
    alarm(1); 
} 

int loop_function() 
{ 
     ++counter; 
     n++; 
} 
Смежные вопросы