Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include <stdlib.h>
- #include <signal.h>
- #include <unistd.h>
- #include <sys/time.h>
- #include <math.h>
- int pauza = 0;
- unsigned long broj = 1000000001;
- unsigned long zadnji = 1000000001; //tu pamtimo proste brojeve
- void periodicki_ispis (int sig) {
- printf("zadnji prosti broj = %lu\n", zadnji);
- }
- int postavi_pauzu () {
- return 1 - pauza;
- }
- void prekini (unsigned long zadnji) {
- printf("zadnji prosti broj = %lu",zadnji);
- exit(1);
- }
- int prost ( unsigned long n ) {
- unsigned long i, max;
- if ( ( n %2 ) == 0 ) /* je li paran? */
- return 0;
- max = sqrt ( n );
- for ( i = 3; i <= max; i += 2 )
- if ( ( n % i ) == 0 )
- return 0;
- return 1; /* broj je prost! */
- }
- int main() {
- unsigned long id;
- id=getpid();
- printf("ID= %lu\n",id );
- //povezi_signale_s_funkcijama; na signal SIGTERM pozovi funkciju prekini();
- sigset(SIGTERM,prekini);
- sigset(SIGINT, postavi_pauzu);
- //postavi_periodicki_alarm; svakih 5 sekundi pozovi funkciju periodicki_ispis();
- struct itimerval t;
- /* povezivanje obrade signala SIGALRM sa funkcijom "periodicki_ispis" */
- sigset ( SIGALRM, periodicki_ispis);
- /* definiranje periodičkog slanja signala */
- /* prvi puta nakon: */
- t.it_value.tv_sec = 0;
- t.it_value.tv_usec = 500000;
- /* nakon prvog puta, periodicki sa periodom: */
- t.it_interval.tv_sec = 0;
- t.it_interval.tv_usec = 500000;
- /* pokretanje sata s pridruženim slanjem signala prema "t" */
- setitimer ( ITIMER_REAL, &t, NULL );
- //while (1)
- // pause (); /* pauzira do primitka bilo kojeg signala */
- while(1) {
- if ( prost ( broj ) )
- zadnji = broj;
- broj++;
- while ( pauza == 1 )
- sleep(1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement