#include #include #include #include int main() { pid_t pid; for(int i=0;i<3;i++) { pid=fork(); switch(pid) { case -1: { perror(" Nie uwtorzono procesu potomnego. \n "); exit(1); } case 0: { if(i==2) printf("gid= %d uid=%d pid=%d ppid=%d \n",getgid(),getuid(),getpid(),getppid()); break; } default: { if(i==2) printf("gid= %d uid=%d pid=%d ppid=%d \n",getgid(),getuid(),getpid(),getppid()); } } } wait(NULL); wait(NULL); wait(NULL); return 0; } #include #include #include #include #include void sig(int num) { printf("numer sygnalu %d \n", num); } int main() { printf("pid = %d ppid = %d \n",getpid(),getppid()); if(signal(SIGUSR1,sig)==SIG_ERR) { perror(":"); exit(-1); } int a=fork(); switch(a) { case -1: { perror(":"); exit(-1); } case 0: { sleep(10); kill(a,SIGUSR1); printf("dziecko\n"); break; } default : { sleep(5); kill(a,SIGUSR1); printf("rodzic \n"); sleep(15); kill(a,SIGUSR1); printf("rodzic2 \n"); wait(NULL); } } return 0; } #include #include #include #include #include int main() { int fd[2]; int x=0; if(pipe(fd)>=0) { switch(fork()) { case -1: { perror(":"); exit(-1); } case 0: { int k=0; close(fd[1]); int r=read(fd[0],&k,sizeof(k)); if(r!=-1) { printf("value =%d \n",k); sleep(1); } else { perror(":"); exit(-1); } while(1) { r= read(fd[0],&k,sizeof(k)); if(r==0) { break; } printf("value =%d \n",k); sleep(1); } close(fd[0]); break; } default: { int b[4]={1,3,4,5}; close(fd[0]); for(int i=0;i<4;i++) { if(write(fd[1],&b[i],sizeof(b))) { printf("write \n"); exit(-1); } close(fd[1]); break; } wait(NULL); } } } else { perror(":"); exit(-1); } return 0; }