2015-04-01 12:15 GMT+03:00 Andrei Tuicu <[email protected]>: > > În data de 1 aprilie 2015, 12:08, Radu MALUŞ <[email protected]> a scris: >> >> >> > On 01 Apr 2015, at 00:34, Adrian Stanciu <[email protected]> >> > wrote: >> > >> > 2015-03-31 23:48 GMT+03:00 Radu MALUŞ <[email protected]>: >> >> Salut, >> >> >> >> Am doua probleme cu testele pentru tema 2. >> >> >> >> Prima e in legatura cu testul 4: Testing append redirect operators >> >> Este singurul care imi pica, rulat pe masina virtuala. >> >> Am observat ca nu am output corect pentru comanda: ./main &> out2.txt >> >> unde, in fisierul rezultat nu am decat output-ul iesirii standard, nu si a >> >> iesirii de eroare standard. >> >> Se pare ca problema vine de la io_flags, valoare care nu e setata nici >> >> pe IO_OUT_APPEND nici pe IO_ERR_APPEND si, cred eu, din cauza asta >> >> fisierul >> >> in care se face redirectarea este rescris la a doua redirectare. >> >> Ar trebui sa ma astept sa am setat io_flags? Nu ar trebui sa aiba una >> >> din cele doua valori de mai sus in cazul redirectarii multiple (adica si >> >> stdout si err)? >> >> >> > >> > Câmpul io_flags va avea ambii biți setați în cazul prezentat de tine.
Într-adevăr, afirmația asta nu este corectă, acei biți sunt folosiți doar pentru modul append. >> > >> >> A doua e in legatura cu testul 0, unde imi spune “line over 80 >> >> characters” pentru o linie care nu are maimult de 80 de caractere, ci are >> >> 73. >> >> Nu inteleg de unde vine eroarea. Caracterele tab nu sunt numarate ca >> >> avand 4 spatii? >> >> >> > >> > Implicit tab-ul este de 8 caractere. Depinde cum e la tine. >> > >> > >> > Adrian >> >> Multumesc pentru raspunsuri. >> Partea cu lungimea liniei am rezolvat-o. >> >> In schimb la io_flags, probabil nu fac eu ceva bine. Nu imi este setat >> niciun flag in cazul testului mentionat mai sus. >> Verificarea flag-urilor este ca in exemplul din DisplayStructure.cpp: >> s->io_flags & IO_OUT_APPEND. > > > Salut! > > Operatorul &> nu scrie in modul append, de aceea nu vei avea setat niciun > bit in io_flags, ceea ce face in schimb e sa-ti redirecteze atat STDOUT-ul > cat si STDERR-ul la _acelasi_ fisier. Cel mai probabil tu nu verifici ca > cele 2 string-uri sunt egale si deschizi de 2 ori fisierul, iar in loc sa > dai dup2 pe acelasi _descriptor_ de fisier, dai dup2 pe 2 descriptori de > fisier diferiti care doar refera acelasi fisier. Aceasta este singura > explicatie pe care o vad pentru comportamentul descris de tine; l-am avut si > eu. > Acesta ar trebui să fie răspunsul corect. Mulțumesc, Andrei. Adrian _______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
