[so] tema4-citire 0 octeti
Palii Ovidiu Gabriel
ovidiu_palii at yahoo.co.uk
Mon Dec 18 00:04:20 EET 2006
> Hello. Facand un beyond compare cu ce ai scris tu si
> testul 1, nu vad
> absolut nici o modificare in prima parte :). Ce ai
> schimbat mai exact?
> Oricum, ar trebui sa mai fie un 'do_exit 0' la
> sfarsit daca asta e tot
> scriptul.
>
> Testele 1-3 sunt mai mult 'din oficiu', ar trebui sa
> le treaca orice program
> cat de incomplet e. Cand ai de citit 0 bytes trebuie
> sa nu se produca
> absolut nimic la iesire si sa se iasa cu succes.
> Problema care apare la tine
> ar putea fi de la faptul ca poate mai scrii ceva la
> stdout...Scoate -q de la
> diff si vezi ce se intampla. Ce pot sa zic mai mult?
La testul 01 nu am facut decat sa comentez restul
liniilor. Fisierul test01.sh complet arata astfel:
#!/bin/bash
#Tema 4 SO - Test 01 - din oficiu :)
#testeaza daca serverul asculta pe portul 8192
#citire 0 bytes dintr-un fisier
#scriere 0 bytes intr-un fisier
#citire dupa EOF, trebuie sa reuseasca si sa citeasca
0 bytes
source f.sh
listenBefore=`netstat -talp --inet | grep ":8192" |
grep -v "TIME_WAIT" | wc -l`
startTest 01
sleep 2
listenAfter=`netstat -talp --inet | grep ":8192" |
grep -v "TIME_WAIT" | wc -l`
if [ $[$listenAfter - $listenBefore] -ne 1 ]
then do_exit 1
fi
#citire 0 bytes
rm -f input output
./generate 0 >input 2>/dev/null
../client 127.0.0.1 rd input 0 0 >output 2>/dev/null
result=$?
diff -q input output
if [ $result -ne 0 -o $? -ne 0 ]
then do_exit 1
fi
#scriere 0 bytes
#rm -f input output
#./generate 0 >input 2>/dev/null
#echo "zzz" >output
#cp output output2
#../client 127.0.0.1 wr output 0 0 <input 2>/dev/null
#result=$?
#diff -q output output2
#if [ $result -ne 0 -o $? -ne 0 ]
# then do_exit 1
#fi
#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
2>/dev/null
#result1=$?
#diff -q output output2
#result2=$?
#if [ $result1 -ne 0 -o $result2 -ne 0 ]
# then do_exit 1
# else do_exit 0
#fi
Iar clientul incepe asa:
int main(int argc,char **argv){
if(argc==6 && atoi(argv[5])==0){//daca am de citit 0
return 0;
}
.................
in cazul testului conditia e indeplinita si deci dau
return 0 fara sa mai scriu nimic.Daca nu era
indeplinita urma sa fac conexiunea la server si asa
mai departe.
Mai simplu de atat nu vad cum, si nici nu-mi dau seama
ce e gresit.
Am incercat si fara -q la diff,dar testul tot
pica.Serverul scria la stdout cate ceva,dar am scos
mesajele respective.Tot nu merge.
Rezultatul rularii este :
Started test 01...
-- FAILED --
Altceva ce mai pot face?
___________________________________________________________
All new Yahoo! Mail "The new Interface is stunning in its simplicity and ease of use." - PC Magazine
http://uk.docs.yahoo.com/nowyoucan.html
More information about the so
mailing list