Witam
Mam pewien problem. Musze zrobie program ktorego zasada dzialania jest nastepujaca. Przesylam do programu nazwe pliku, program tworzy proces potomny ktoremu przekazuje nazwe tego pliku, proces potomny sprawdza czy ten plik istnieje, jezeli nie to zwaraca do procesu macierzystego informacje ze plik nie istnieje a proces macierzy wyswietla to na ekranie, jezeli natomiast plik istnieje proces macierzysty otwiera go czyta z niego i przysyla dane (bufforem) do procesu macierzystego ktory wyswietla zawartosc tego pliku na ekranie. Mi sie udalo zrobic prawie wszystko jedyny problem jaki mam to czytanie z pliku tzn program czyta mi tylko kilka linijek i koniec , nie czyta do konca pliku :(. (nie wiem jak zmusic go do czytania do konca pliku). Prosilbym o pomoc.
Ps zalezy mi zeby to bylo na funkcji open.
#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
#include <sys/stat.h>
int main(int argc, char*argv[])
{
int pid,error,czyt;
int mp[2],pp[2];
pipe(mp);
pipe(pp);
char readbuffer[200]="",readbuffor[200]="",dane[200]="";
if ((pid=fork())==-1)
{
printf("Nie mozna stworzyc procesu potomnego");
exit(0);
}
if (pid == 0)
{
close(mp[1]);
close(pp[0]);
read(mp[0],readbuffer,sizeof(readbuffer));
printf("To jest nazwa przesłanego pliku: %s \n",readbuffer);
int plik = open(readbuffer,O_RDONLY);
if (plik == -1)
{
write(pp[1],"Plik nie istnieje",20);
}
else
{
while(czyt != -1)
{
czyt = read(plik,dane,sizeof(dane));
write(pp[1],dane,sizeof(dane));
}
}
}
else
{
close(mp[0]);
close(pp[1]);
write(mp[1],argv[1],strlen(argv[1]));
czyt1 = read(pp[0],readbuffor,sizeof(readbuffor));
printf("%s \n",readbuffor);
}
}
Pozdrawiam
Pawel