Advertisement
Guest User

Untitled

a guest
Dec 13th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.39 KB | None | 0 0
  1. include <signal.h>
  2. #include <unistd.h>
  3. #include <fcntl.h>
  4. #include <string.h>
  5.  
  6. void obsluga_sig(int);
  7. void koniec();
  8.  
  9. int main()
  10. {
  11. int pid, licznik =0;
  12.  
  13. if((pid=fork()) != 0)
  14. {
  15. usleep(1000000);
  16. char linia[200];
  17. FILE* profile = fopen("/etc/profile", "r");
  18. int bufor = open("bufor", O_WRONLY | O_CREAT, 777);
  19.  
  20. while(fgets(linia, 200, profile) != NULL)
  21. {
  22. while(linia[licznik] > 0)
  23. {
  24. licznik++;
  25. }
  26.  
  27. write(bufor, linia, licznik);
  28. licznik = 0;
  29. memset(linia, 0, 200);
  30.  
  31. kill(pid, SIGUSR1);
  32. usleep(70000);
  33.  
  34. lseek(bufor, 0, 0);
  35. write(bufor, linia, 200);
  36. lseek(bufor, 0, 0);
  37. }
  38.  
  39. fclose(profile);
  40. close(bufor);
  41.  
  42. remove("bufor");
  43. kill(pid, SIGUSR2);
  44.  
  45. }
  46. else
  47. {
  48. signal(SIGUSR1, obsluga_sig);
  49. signal(SIGUSR2, koniec);
  50. for(;;);
  51. }
  52.  
  53. return 0;
  54.  
  55. }
  56.  
  57. void obsluga_sig(int sig)
  58. {
  59. int plik_wejsciowy = open("bufor", O_RDONLY);
  60. char linia[200];
  61. read(plik_wejsciowy, linia, 200);
  62. printf("%s", linia);
  63. fflush(stdout);
  64. close(plik_wejsciowy);
  65. }
  66.  
  67. void koniec()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement