[so] [SO][Tema 2][Windows] Echo,bad file descriptor

Alexandru Militaru alexandru.cmilitaru at gmail.com
Sun Mar 25 22:23:49 EEST 2018


Am rezolvat și problema cu reminiscențele de la suprascriere. Nu
făceam truncate când deschideam fișierul pentru scriere.

2018-03-25 20:16 GMT+03:00 Alexandru Militaru <alexandru.cmilitaru at gmail.com>:
> Salut,
>
> Mulțumesc mult, am rezolvat. Am folosit GENERIC_WRITE și
> SetFilePointer în loc de FILE_APPEND_DATA. Îmi rămâne, totuși,
> problema la redirectare simplă, când se păstrează reminiscențe din
> comanda anterioară. O să mai fac debug să văd care e problema.
>
> 2018-03-25 18:52 GMT+03:00 Adrian Șendroiu <molecula2788 at gmail.com>:
>> 2018-03-24 17:49 GMT+02:00 Alexandru Militaru via so <so at cursuri.cs.pub.ro>:
>>> Salut,
>>>
>>> Am aceeași problemă. Oricum aș încerca să fac append, primesc ”bad file
>>> descriptor”. O problemă ciudată apare și când fac redirectare simplă (>)
>>> într-un fișier de mai multe ori la rând. Un "cat f.txt" dat după un "pwd >
>>> f.txt; ls > f.txt" va afisa output-ul comenzii ls + niște reminiscențe
>>> nesuprascrise din comanda pwd. Închid Handle-urile și deschid fișierele cu
>>> permisiuni, zic eu, bune. Care ar putea fi problema?
>>>
>>> Am încărcat tema pe gitlab. Userul meu este cmilitaru2501.
>>>
>>> Mulțumesc!
>>
>> Salut,
>>
>> Problema la append este că deschizi fișierul cu FILE_APPEND_DATA. Ceea
>> ce nu este greșit în sine, ci este mai degrabă o problemă de cygwin.
>> Cumva în procesul copil (ls), cygwin ajunge să creadă că stdout-ul
>> este deschis read-only, din cauza faptului că el se uită doar după
>> valorile FILE_READ_DATA și FILE_WRITE_DATA, nu și FILE_APPEND_DATA
>> [1]. Soluția din păcate este să renunți la modul append și să deschizi
>> fișierul cu GENERIC_WRITE (care implică și FILE_WRITE_DATA).
>>
>> [1] https://cygwin.com/git/gitweb.cgi?p=newlib-cygwin.git;a=blob;f=winsup/cygwin/dtable.cc;h=9ebd45c063372e7d931a7c68895a574802a005d0;hb=HEAD#l381


More information about the so mailing list