#include #include #include #include #include int main(int argc, char *argv[]) { if(strcmp(argv[1],"creat")==0) { mkfifo(argv[2],0666); strcat(argv[2],".txt"); creat(argv[2],0666); return 0; } if(strcmp(argv[2],"dodaj")==0) { strcat(argv[1],".txt"); int wejscie = open(argv[1],O_WRONLY | O_APPEND,0666); if(wejscie ==-1) { printf("nie ma takiego uzytkownika\n"); return 0; } else { dup2(wejscie,1); printf("%s\n",argv[3]); close(wejscie); } return 0; } if(strcmp(argv[2],"usun")==0) { strcat(argv[1],".txt"); int wejscie = open(argv[1], O_RDONLY,0666); if(wejscie ==-1) { printf("nie ma takiego uzytkownika\n"); return 0; } int rura[2]; pipe(rura); int a=fork(); if(a>0) { char tab[25]; int i=0; char c; while(read(wejscie,&c,1)==1){ tab[i]=c; i++; if(c=='\n') { tab[i-1]='\0'; //printf("%s \n",tab); i=0; if(strcmp(tab,argv[3])!=0) {dup2(rura[1],1); close(rura[0]); printf("%s\n",tab); //write(rura[1],"zenek",5); } } } close(wejscie); } if(a==0) { int wyjscie=open(argv[1],O_WRONLY | O_TRUNC,0666); char c; close(rura[1]); //char buf[100]; //read(rura[0],buf,5); while(read(rura[0],&c,1)==1){ write(wyjscie,&c,1); } close(wyjscie); //printf("%s\n",buf); } return 0; } if(strcmp(argv[1],"history")==0) { char bufforek; int wyjscie = open(argv[2],O_RDONLY); while(read(wyjscie,&bufforek,1)==1) { printf("%c",bufforek); } close(wyjscie); return 0; } if(strcmp(argv[2],"wszyscy")==0) { int i=0,k=0; char c; char imiona[30][100]; char tab[25]; strcat(argv[1],".txt"); int kontakt=open(argv[1],O_RDONLY,0666); if(kontakt==-1) {printf("Nie ma takiego uzytkownia"); return 0;} while(read(kontakt,&c,1)==1) { tab[i]=c; i++; if(c=='\n') { tab[i-1]='\0'; i=0; strcpy(imiona[k],tab); k++; } } close(kontakt); int a[k]; for(i=0;i0) { wait(NULL); mkfifo(argv[2],0666); int zwrot = open(argv[2],O_WRONLY); dup2(zwrot,1); printf("Wiadomosc zostala odczytana przez %s\n",argv[i]); close(zwrot); break; } } } return 0; } else { int i; int a[argc]; int b[argc]; int rozmiar = strlen(argv[argc-1]); for(i=2;i