Advertisement
Guest User

Untitled

a guest
Oct 26th, 2014
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. #include<stdio.h>
  2. #include <stdlib.h>
  3. #include <signal.h>
  4. #include <unistd.h>
  5. #include <sys/time.h>
  6. #include <math.h>
  7.  
  8. int pauza = 0;
  9. unsigned long broj = 1000000001;
  10. unsigned long zadnji = 1000000001; //tu pamtimo proste brojeve
  11.  
  12. void periodicki_ispis (int sig) {
  13. printf("zadnji prosti broj = %lu\n", zadnji);
  14. }
  15. int postavi_pauzu () {
  16. return 1 - pauza;
  17. }
  18. void prekini (unsigned long zadnji) {
  19. printf("zadnji prosti broj = %lu",zadnji);
  20. exit(1);
  21. }
  22.  
  23. int prost ( unsigned long n ) {
  24. unsigned long i, max;
  25.  
  26. if ( ( n %2 ) == 0 ) /* je li paran? */
  27. return 0;
  28.  
  29. max = sqrt ( n );
  30. for ( i = 3; i <= max; i += 2 )
  31. if ( ( n % i ) == 0 )
  32. return 0;
  33.  
  34. return 1; /* broj je prost! */
  35. }
  36.  
  37. int main() {
  38. unsigned long id;
  39. id=getpid();
  40. printf("ID= %lu\n",id );
  41. //povezi_signale_s_funkcijama; na signal SIGTERM pozovi funkciju prekini();
  42. sigset(SIGTERM,prekini);
  43. sigset(SIGINT, postavi_pauzu);
  44.  
  45. //postavi_periodicki_alarm; svakih 5 sekundi pozovi funkciju periodicki_ispis();
  46. struct itimerval t;
  47. /* povezivanje obrade signala SIGALRM sa funkcijom "periodicki_ispis" */
  48. sigset ( SIGALRM, periodicki_ispis);
  49.  
  50. /* definiranje periodičkog slanja signala */
  51. /* prvi puta nakon: */
  52. t.it_value.tv_sec = 0;
  53. t.it_value.tv_usec = 500000;
  54. /* nakon prvog puta, periodicki sa periodom: */
  55. t.it_interval.tv_sec = 0;
  56. t.it_interval.tv_usec = 500000;
  57.  
  58. /* pokretanje sata s pridruženim slanjem signala prema "t" */
  59. setitimer ( ITIMER_REAL, &t, NULL );
  60.  
  61. //while (1)
  62. // pause (); /* pauzira do primitka bilo kojeg signala */
  63.  
  64. while(1) {
  65. if ( prost ( broj ) )
  66. zadnji = broj;
  67. broj++;
  68. while ( pauza == 1 )
  69. sleep(1);
  70. }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement