[so] [Tema 2]io_flags

Andrei Tuicu andrei.tuicu at gmail.com
Wed Apr 1 12:15:01 EEST 2015


În data de 1 aprilie 2015, 12:08, Radu MALUŞ <so at cursuri.cs.pub.ro> a scris:

>
> > On 01 Apr 2015, at 00:34, Adrian Stanciu <adrian.stanciu.pub at gmail.com>
> wrote:
> >
> > 2015-03-31 23:48 GMT+03:00 Radu MALUŞ <so at cursuri.cs.pub.ro>:
> >> 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.
> >
> >> 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.

Cheers,
Andrei Tuicu


>

Radu Malus
> CC332
> _______________________________________________
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20150401/33f6ade2/attachment.html>


More information about the so mailing list