[so] [Tema5]Nelamuriri testul 1 Linux

Daniel Baluta daniel.baluta at gmail.com
Thu Jun 11 22:32:19 EEST 2009


2009/6/11 Cosmin Ratiu <cosminratiu at gmail.com>:
>
> 2009/6/11 ana-maria lepar <amylepar at gmail.com>
>>
>> Salutare,
>>
>> Am si eu o mare dilema legata de testul 1.
>> Exista acolo un caz in care se citeste dupa EOF (redau mai jos)  :
>> ===========================
>> #citire de dupa EOF
>> rm -f input output output2
>> ./generate 10 >input 2>/dev/null
>> touch output2
>>
>> ../client 127.0.0.1 rd input 20 10 >>output
>> result1=$?
>> diff -q output output2
>> result2=$?
>>
>> if [ $result1 -ne 0 -o $result2 -ne 0 ]
>>     then do_exit 1
>>     else do_exit 0
>> fi
>> ===========================
>>
>> Problema mea este urmatoarea :
>>
>>        daca offset > lungime fisier : consider eroare la client si ies cu
>> cod -1 sau consider
>> eroare la server si trimit catre client cod de eroare sau ce fac?
>
> Nu poti sa iti dai seama in client cat de lung e fisierul, pentru ca e pe
> server (fa abstractie temporar ca se citeste pe localhost).
> Deci tu pur si simplu faci cererea, in server ar trebui sa iti dea eroare,
> pe care o trimiti inapoi la client, care iese si nu scrie nimic.

De fapt in server nu o sa obtii chiar o 'eroare'.
In server exista fisierul input de dimensiune 10 octeti.

Serverul primeste de la client comanda de citire a 10 octeti de la
offsetul 20 din fisierul input.
Astfel server-ul se va deplasa la offsetul 20. Apelul lseek(fd,
SEEK_SET, 20 ) se va efectua cu succes, dupa care
se va apela read(fd, buf, 10) apel care va intoarce 0, semn ca s-a
ajuns la sfarsitul fisierul fara a se citi nimic.

Acum server-ul va trimite clientului un raspuns spunandu-i ca cererea
" de citire a 10 octeti de la offsetul 20 din
fisierul input" s-a efectuat cu succes, iar datele citite au dimensiunea 0.

Clientul nu va afisa nimic la iesire si va iesi cu cod 0 ( succes ).

>
> Observi ca se asteapta ca clientul sa iasa normal cu cod 0 si fisierul
> rezultat sa fie gol (diff cu un fisier gol).

Daniel.


More information about the so mailing list