Studia zaoczne. 2006/2007 Zestaw 1
12 Wyjainij działanie programu:
void sig_usr(int signo) { if (signo«»SIGUSRl)
printf("otrzymano SIGUSRl\n"); else if (signo«=SIGUSR2)
printf("otrzymano SIGUSR2\n*); else
printf<"otrzymano sygnał %d\n",signo); return;
)
int mainO (
signal(SIGUSR1, sig_usr); signal(SIGUSR2, sig_usr); for (;;) pause();
)
13 Opisz krótko działanie poniższego programu:
1. iinclude <stdio.h>
2. łinclude <sys/types.h>
3. #include <unistd.h>
4. iinclude <stdlib.h>
5. łinclude <string.h>
6. łinclude <wait.h>
7. #define DEF_PAGER "/bin/more"
8. tdefine MAXLINE 80
9. int main(int argc, char *argv[]) {
10. int n. fd[2] ;
11. pid_t pid;
12. FILE *fp;
13. char linę[MAXLINE], "pager;
14. fp=fopen(argv[l],"r");
15. pipe(fd);
16. pid=fork();
17. if (pid<0){
18. perror( "forJc" ) ;
19. exit(1);
21. else if (pid > 0) (
22. close(fd(0]);
23. while (fgets(line,MAXLINE,fp) != NULL) (
24. n=strlen(linę);
25. write(fd(l). linę. n);
26. )
27. close (fd(1]);
28. waitpid(pid.NULL.O);
29. exi t{0);
30. )
31. else {
32. close(fd[l]);
33. dup2(fd[0],STDIN_FILENO);
34. close(fd[0]);
35- ** ( (pager=getenv("PROGRAM”)) == NULL)
36. pager=DEF_PAGER;
37. execl(pager.pager,NULL);
38. )
39. )
3