Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- include <signal.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <string.h>
- void obsluga_sig(int);
- void koniec();
- int main()
- {
- int pid, licznik =0;
- if((pid=fork()) != 0)
- {
- usleep(1000000);
- char linia[200];
- FILE* profile = fopen("/etc/profile", "r");
- int bufor = open("bufor", O_WRONLY | O_CREAT, 777);
- while(fgets(linia, 200, profile) != NULL)
- {
- while(linia[licznik] > 0)
- {
- licznik++;
- }
- write(bufor, linia, licznik);
- licznik = 0;
- memset(linia, 0, 200);
- kill(pid, SIGUSR1);
- usleep(70000);
- lseek(bufor, 0, 0);
- write(bufor, linia, 200);
- lseek(bufor, 0, 0);
- }
- fclose(profile);
- close(bufor);
- remove("bufor");
- kill(pid, SIGUSR2);
- }
- else
- {
- signal(SIGUSR1, obsluga_sig);
- signal(SIGUSR2, koniec);
- for(;;);
- }
- return 0;
- }
- void obsluga_sig(int sig)
- {
- int plik_wejsciowy = open("bufor", O_RDONLY);
- char linia[200];
- read(plik_wejsciowy, linia, 200);
- printf("%s", linia);
- fflush(stdout);
- close(plik_wejsciowy);
- }
- void koniec()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement