#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/stat.h>
char *wskazNaPodziel[5];
void klient(){
FILE *fps;
FILE *fpk;
char string[100];
while(1){
fpk = fopen("my_fifo_K", "w");
fps = fopen("my_fifo_S", "r");
fprintf(stdout, "Komenda: ");
scanf("%s", string);
//fgets(string, 100, fp);
fputs(string, fpk);
printf("Otrzymalem: %s\n\n", string);
fclose(fpk);
fclose(fps);
}
}
int serwer(){
FILE *fps;
FILE *fpk;
char string[100];
char podziel[5][20];
int dlugosc, parametry=0;
int wiersz=0;
int kolumna=0;
int i=0;
while(1){
fpk = fopen("my_fifo_K", "r");
fps = fopen("my_fifo_S", "w");
fgets(string, 100, fpk);
dlugosc = strlen(string);
for ( i=0; i<dlugosc; i++){
if (string[i] != ' ' && string[i] != '\n'){ //wstawianie komendy lub parametrow do tablicy
podziel[wiersz][kolumna]=string[i];
kolumna++;
}else if (string[i]=='\n'){ //wykrywanie końca komendy
parametry++;
}else if(string[i] == ' '){ //wykrywanie przerw
podziel[wiersz][kolumna]='\0';
wiersz++;
kolumna=0;
parametry++;
}
}
for ( i=0; i<parametry; i++ ){
wskazNaPodziel[i] = podziel[i];
}
printf("Test: \n");
execvp(podziel[0],wskazNaPodziel);
fprintf(stdout, "ok: ");
fclose(fpk);
fclose(fps);
sleep(1);
return 0;
}
}
int main(){
umask(0);
mkfifo("my_fifo_K", 0666);
mkfifo("my_fifo_S", 0666);
if(fork()){
serwer();
}else{
klient();
}
return 0;
}